免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12
最近访问板块 发新帖
楼主: zhengangzhu
打印 上一主题 下一主题

一行中连续多于一个空格替换成横线正则表达式如何写啊 [复制链接]

论坛徽章:
0
11 [报告]
发表于 2008-01-17 09:54 |只看该作者

Lonki说的tr/ /-/ 更简洁明了

论坛徽章:
0
12 [报告]
发表于 2008-01-18 11:25 |只看该作者
我想补充问一个问题:
同样的空格替换问题
my $str = "hello     chinaUnix i am wang  !";
替换要求:单独的空格保留,连续空格替换成连续-
即:
hello-----chinaUnix i am wang---!
试了半天还是不会
我是这样写的$str =~ s/(\s+)/if (length($1) == 1) {\s} else {'_'x length($1)}/eg;
可惜报错,呵呵
还请指点

弄出来了
$str =~ s/(\s+)/length($1) == 1 ? $1 : '_' x length($1)/eg;

这样就可以了,虽然这个问题上比 s/(\s{2,})// 要麻烦,呵呵

[ 本帖最后由 CU_wanglijun 于 2008-1-18 14:27 编辑 ]

论坛徽章:
0
13 [报告]
发表于 2008-01-18 12:19 |只看该作者
原帖由 CU_wanglijun 于 2008-1-18 11:25 发表
我想补充问一个问题:
同样的空格替换问题
my $str = "hello     chinaUnix i am wang  !";
替换要求:单独的空格保留,连续空格替换成连续-
即:
hello-----chinaUnix i am wang---!
试了半天还是不会
...

$str=~s/(\s{2,})/"-" x length($1)/eg;

论坛徽章:
0
14 [报告]
发表于 2008-01-18 13:54 |只看该作者
多谢楼上,忽略这一点了,呵呵

论坛徽章:
0
15 [报告]
发表于 2008-01-18 13:55 |只看该作者
s/(\s+)/'-' x length($1)/eg

翻了下大骆驼,电子版的,呵呵,眼睛都找花了,没有看到"/e",请问这个/e是什么含义?谢谢!

论坛徽章:
0
16 [报告]
发表于 2008-01-18 13:59 |只看该作者
回楼上
把替换部分当成一个表达式计算
可能不全面

论坛徽章:
0
17 [报告]
发表于 2008-01-18 14:11 |只看该作者
大骆驼:
/e 修饰词把 REPLACEMENT 当作一个 Perl 代码块,而不仅仅是一个替换的字串。执行这段代码后得出的结果当作替换字串使用。

谢谢兄弟!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP