Chinaunix

标题: perl的正则匹配问题 [打印本页]

作者: earl808    时间: 2008-08-21 13:30
标题: perl的正则匹配问题
我有这样的一些文本 XXX(PU 。) (PU “)XXX 或 XXX(PU ?) (PU “)XXX 用这样的正则匹配:
$_ =~ /(.*)(\(PU 。\)\s*\(PU “\))(.*)/

得到的$2怎么是等于$2=(PU 。 $3=) (PU “)XXX
我是想要一次得到(PU 。) (PU “)或(PU ?) (PU “)
谢谢!
作者: johnrobbet    时间: 2008-08-21 13:30
你的表达式匹配不了第二种情况(带有问号的)
试下这样:
/(.*)(\(PU (。|?)\)\s*\(PU “\))(.*)/
$2=(PU 。) (PU “)或者
$2=(PU ?) (PU “)

其实,你的正则表达式已经能够匹配第一种情况,并且在$2里面有你想要的东西了
作者: cobrawgl    时间: 2008-08-21 13:40
好像没问题啊?
作者: cobrawgl    时间: 2008-08-21 13:47
/(\(.*\))/;

这样也可以吧
作者: earl808    时间: 2008-08-21 13:52
标题: 回复 #4 johnrobbet 的帖子
/(.*)(\(PU 。|?\)\s*\(PU “\))(.*)/
其实我是这么写的。。
不过楼上的是对的
原来加个括号就行了。
作者: earl808    时间: 2008-08-21 13:53
最佳答案跑上去了。。我说的2楼




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2