[英]Regex: Everything except some pattern
我有一个字符串:
富吧
foo1#9 0x103806f4 bar1
foo2#10 0x0f6dd704 bar2
foo3 bar3
我尝试了以下方法:
^((?!#[\\ d] {1,2} 0x [0-9a-f] {8})。)* $
得到
富吧
foo3 bar3
和
^((?!#[\\ d] {1,2} 0x [0-9a-f] {8})。)*
得到
富吧
foo1
foo2
foo3 bar3
但是我想得到的是
富吧
foo1 bar1
foo2 bar2
foo3 bar3
我该如何实现?
如果您需要开头和结尾的非空白字符,则使用负超前行将无法完成任务。 您可以匹配预期的输出,如下所示:
^(\S+).*?(\S+)$
然后,可以用您喜欢的语言组合匹配结果: python example ...
>>> import re
>>> s = '''foo bar
foo1 #9 0x103806f4 bar1
foo2 #10 0x0f6dd704 bar2
foo3 bar3'''
...
>>> for m in re.finditer(r'(?m)^(\S+).*?(\S+)$', s):
... print(" ".join(m.groups()))
foo bar
foo1 bar1
foo2 bar2
foo3 bar3
与其使用正则表达式,不如考虑分割字符串并将索引连接在一起。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.