1
最近正在看Jeffery的Mastering Regular Expressions一书p69,其中提到将多个连续
的空行替换成一个的例子:
$text =~s/^s*$/
/mg;
目的是把一个纯文本中的多个空行(可含space和tab)替换为一个html的段落
不过这个命令工作原理似乎不太明白,在增强多行模式/m下,总是出现两个
比如我的文件txt(行号不算):
1 a
2
3
4
5 b
6
7
8
9
10 c
用如下的perl脚本t2h.pl:
#!/usr/bin/perl
undef $/;
$text=<>;
$text=~ s/^s*$/
/mg;
print "$text";
运行结果如下:
>./t2h.pl txt
a
b
c
似乎是什么都没有的空行就不行出现了两个连续的
,如果加了个空格就可以,具体
为什么有点奇怪了
xssn@thinkm57:~/regex$ cat txt -An
1 $
2 a$
3 $
4 $
5 $
6 b$
7 $
8 $
9 $
10 c$
11 $
12 $
13 $
14 $
15 $
16 $
17 $
18 $
xssn@thinkm57:~/regex$ ./t2h.pl txt
a
b
c
有哪位大牛可以解释一下为什么当有连续的完全空行替换会出现两个
?谢谢!