我正在寻找一种正则表达式,它可以让我在第一个空白行的文本中获取所有内容。我有以下内容:
reg = r'((Opposition|Oppose):?\s*)(.*?)\n\n'
str1 = """Opposition
California Attorneys for Criminal Justice
Californians for Safety and Justice
Drug Policy Alliance
Friends Committee on Legislation of California
Legal Services for Prisoners with Children
Analysis Prepared
"""
str2 = """Oppose: None received
-- END --
"""
当我跑步时:
match = re.search(reg, str1, re.DOTALL)
print ma
tch.group(3)
我明白了:
California Attorneys for Criminal Justice
Californians for Safety and Justice
Drug Policy Alliance
Friends Committee on Legislation of California
Legal Services for Prisoners with Children
但是当我跑步时:
match = re.search(reg, str2, re.DOTALL)
print match.group(3)
我明白了:
None received
-- END --
第一个字符串的结果是正确的,但我想要的第二个字符串只是"没有收到"。我无法得到一个很好的解释,为什么我得到" - 结束 - "同样。我的正则表达式不应该与\ n之后的\ n匹配;没有收到"以及空白行上的\ n并停止?任何帮助将不胜感激
答案 0 :(得分:1)
您可以确保只匹配仅空白行[^\S\n]*
(= 匹配除非空格或换行符之外的0个或更多字符):
((Oppos(?:e|ition)):?\s*)(.*?)\n[^\S\n]*\n[^\S\n]*
请参阅demo
我也缩短了第二个捕获组。