Redian新闻
>
简单的perl正则表达式文本替换多个空行问题求教
avatar
简单的perl正则表达式文本替换多个空行问题求教# Programming - 葵花宝典
s*r
1
Applications are invited for Graduate Research Assistant positions (MS or
PhD) to join the Chemical and Bioengineering Department and the NSF
Generation-3 Engineering Research Center - Revolutionizing Metallic
Biomaterials. http://erc.ncat.edu/
Interdisciplinary research projects focus on cell-metal interaction (
biocompatibility and regeneration), cardiovascular, and neurovascular
applications.
Interested individuals should submit a detailed resume including BS (and MS
if applicable) GPA, GR
avatar
s*a
2
爸妈过海关时,需不需要出示我的护照签证复印件?
过海关是除了爸妈的护照,I-94入境表,海关申报表,和我给海关官员的信外,还要带
什么吗?
avatar
x*n
3
最近正在看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
似乎是什么都没有的空行就不行出现了两个连续的

,如果加了个空格就可以,具体
为什么有点奇怪了
[email protected]:~/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 $
[email protected]:~/regex$ ./t2h.pl txt


a


b


c
有哪位大牛可以解释一下为什么当有连续的完全空行替换会出现两个

?谢谢!

avatar
i*n
4
不需要
不需要

【在 s******a 的大作中提到】
: 爸妈过海关时,需不需要出示我的护照签证复印件?
: 过海关是除了爸妈的护照,I-94入境表,海关申报表,和我给海关官员的信外,还要带
: 什么吗?

avatar
e*o
5
^ 的意思是在\n 之后。 $的意思是在\n之前。
a\n\n\nb
a\n 不match:
\s* 吃掉\n\n,后面是b,不行,吐出一个\n,match1次,吐出n后,前是\n,后面\n,
又match 一次,一共match两次。
a\n\n\n\s\nb:
\s* 吃掉\n\n\s\n,后面是b,不行,吐出一个\n,match1次,吐出n后, 前面是\s, 不
行, 剩下的一个n不match。一共match一次。
水平比较次,不知道说清楚没有。
用这个
https://metacpan.org/pod/Regexp::Debugger
rxrx your_scripts.pl
然后 按n,可以看动态的看怎么匹配的。
avatar
s*a
6
Thank you very much!

【在 i*n 的大作中提到】
: 不需要
: 不需要

avatar
x*n
7
一看您的说话方式(吃-吐)就知道是大牛,谢谢指点:-)

【在 e*******o 的大作中提到】
: ^ 的意思是在\n 之后。 $的意思是在\n之前。
: a\n\n\nb
: a\n 不match:
: \s* 吃掉\n\n,后面是b,不行,吐出一个\n,match1次,吐出n后,前是\n,后面\n,
: 又match 一次,一共match两次。
: a\n\n\n\s\nb:
: \s* 吃掉\n\n\s\n,后面是b,不行,吐出一个\n,match1次,吐出n后, 前面是\s, 不
: 行, 剩下的一个n不match。一共match一次。
: 水平比较次,不知道说清楚没有。
: 用这个

avatar
z*n
8
注意留个你的cell phone number,以防他们会需要跟你询问一些情况。
相关阅读
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。