闻春雨 发表于 2016-09-05 20:57

用一个正则表示式表达出所有全匹配搜索到210,但是,又不包括有peer的行里的210

文本内容
: peeripaddress=10.20.227.210
: peer2fsafd=210
(92): Scheduler2fsafd2=210666666
address.210   
213ddress=10.20.227.sdfsdf210dsd   
213address=10.20.227.vcxv210112      
address=10.20.227.210   
address=10.20.227.210   


我试了用(?!.*peer)^.*210 匹配到的是下面的,我的要求是全匹配到210,不包括前面的address,address=10.20.227等 ,也就是说只有第4行和最后两行的210
(92): Scheduler2fsafd2=210
address.210   
213ddress=10.20.227.sdfsdf210
213address=10.20.227.vcxv210   
address=10.20.227.210   
address=10.20.227.210   


hztj2005 发表于 2016-09-05 23:21

不知是你语文没学好,还是我语文没学好,我理解不了你的意思。

104359176 发表于 2016-09-05 23:35

不匹配的部分可以用非捕获括号,或者不捕获,没必要用前瞻,因为前瞻语句有长度限制。

(?:.*peer)(^.*?210)

闻春雨 发表于 2016-09-06 02:24

回复 3# 104359176

不行的,匹配不到

闻春雨 发表于 2016-09-06 06:42

回复 2# hztj2005

简单说就是搜索210,排除非全字匹配的,同时行里有PEER里的,用正则表达式来表达

闻春雨 发表于 2016-09-06 07:10

我找到了,用(?<!peer.*)210\b,但是在UEDIT中选择了正则表达式匹配不上,可能是UEDIT不支持正则表示式中的负向零宽断言

sunzhiguolu 发表于 2016-09-07 09:17

试下,
perl -ne 'print if(!/peer.*?=.*?210/)' f
页: [1]
查看完整版本: 用一个正则表示式表达出所有全匹配搜索到210,但是,又不包括有peer的行里的210