使用正则表达式负向查找,我必须搜索一个文本文件并标识一个部分已知的文本行,该行之后没有另一部分已知的文本行。这是文本文件的简化示例:
blahblahblah.Name=qwqwqwqwqw
abracadabra.Surname=ererererer
zxzxzxzxzx.Name=kmkmkmkmkmkm
oioioioi.Name=dfdfdfdfdfdf
popopopopopopo.Surname=lklklklklklklk
在上面的示例中,您可以看到以下模式:带有 Name 的行应始终跟有带有 Surname 的行,但有时不会发生。我必须确定那些“名称行”后面没有“姓氏行”。
我正在Eclipse中使用文件搜索(它支持正则表达式)。
我想这是我最好的尝试之一,但仍然不能解决问题:
(名称。* \ n)(?!。*姓氏)
请分享您的想法。 亲切的问候。
答案 0 :(得分:3)
答案 1 :(得分:2)
.*\bName=.*\n(?!.*\bSurname=)
可以。
以下是Python中的示例。
import re
s='''blahblahblah.Name=qwqwqwqwqw
abracadabra.Surname=ererererer
zxzxzxzxzx.Name=kmkmkmkmkmkm
oioioioi.Name=dfdfdfdfdfdf
popopopopopopo.Surname=lklklklklklklk'''
print(re.findall(r'\bName=.*\n(?!.*\bSurname=)', s))
这将输出:
['zxzxzxzxzx.Name=kmkmkmkmkmkm\n']