|  | 
 
| 
x
马上注册,结交更多好友,享用更多功能^_^您需要 登录 才可以下载或查看,没有账号?立即注册  复制代码p=re.compile(r'((?!bat$|exe$).*$)', re.M)  #为什么这样写,前向否定断言就不起作用了呢?
A=p.findall('123.txt\n85.exe\ng9.bat\nasdfi.xyz\nefd')
>>> A
['123.txt', '', '85.exe', '', 'g9.bat', '', 'asdfi.xyz', '', 'efd', '']
p=re.compile(r'(\w+[.](?!bat$|exe$).*$)', re.M)   #这个就没有问题,但本意是“nefd”也要摘出来的。
A=p.findall('123.txt\n85.exe\ng9.bat\nasdfi.xyz\nefd')
>>> A
['123.txt', 'asdfi.xyz']
 
 另,(?!bat$|exe$)中间为什么要用或“|”,否定不是应该用与“&”吗?
 
复制代码>>> import re
>>> s='123.txt\n85.exe\ng9.bat\nasdfi.xyz\nefd'
>>> p=re.compile(r'^(?!.*\.(?:bat|exe)).+', re.M)
>>> p.findall(s)
['123.txt', 'asdfi.xyz', 'efd']
 | 
 |