Perl带换行符的正则匹配,在线等

需要跨行匹配某个序列比如以下字符串:$str="ABCDEFG"欲匹配:“CD”该怎么进行呢?我的表达式/C\r\nD/无法匹配/C\r\n/是可以查到字母C以及换行符的... 需要跨行匹配某个序列

比如以下字符串:
$str= " ABC
DEFG"
欲匹配:
“C
D”
该怎么进行呢?
我的表达式 /C\r\nD/ 无法匹配
/C\r\n/ 是可以查到字母C以及换行符的,但是加上D就不行了,求高人指导
展开
 我来答
百度网友c9e795dda
2014-05-01 · TA获得超过5167个赞
知道大有可为答主
回答量:1128
采纳率:0%
帮助的人:1152万
展开全部
$str= " ABC
DEFG";

print 1 if $str =~ /C\s+D/m;
或者
print 1 if $str =~ /C[\r\n]+D/m;
追问

诡异啊,直接定义$str,结果是真确的,但是如果是从txt里面读取出字符串,就没法匹配,有图有真相:

追答
这是因为 while () 每次只会读一行, 所以, 

第一次读的是: ABC\r
第二次读的是: DEFG
也因此 /C[\r\n]+D/m 这个模式从来没匹配到

要做到你想要的那个效果, 可能你要写成
@lines = ;
$str = join "", @lines;
$str =~ s/C[\r\n]+D/ /mg;
# 或者 $str =~ $str =~ s/(C)[\r\n]+(D)/$1 $2 /mg;
# 或者 $str =~ s/[\r\n]+/ /mg;

print $str

其实.. 你想做甚麼 ?
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式