我有以下代码同时匹配第1行和第2行,我 只想匹配第2行而不是第1行,有人可以提供有关此操作的指南吗?
import re
line1 = '''Revert "Revert <change://problem/47614601> [tech feature][V3 Driver] Last data path activity timestamp update is required for feature""'''
line2 = '''Revert <change://problem/47614601> [tech feature][V3 Driver] Last data path activity timestamp update is required for feature"'''
if re.findall(".*?(?:Revert|revert)\s*\S*(?:change:\/\/problem\/)(\d{8})", line2):
match = re.findall(".*?(?:Revert|revert)\s*\S*(?:change:\/\/problem\/)(\d{8})", line2)
print "Revert radar match%s"%match
revert_radar = True
print revert_radar
答案 0 :(得分:0)
这样的事情应该做你想要的:
>>> regex = "(?!:(?:R|r)evert.*)(?:Revert|revert)\s*\S*(?:change:\/\/problem\/)(\d{8})"
>>> re.match(regex, line1) is None
True
>>> re.match(regex, line2).groups()
('47614601',)
答案 1 :(得分:0)
后面负外表:通过字sameword - 空间 - 双引号
NOT进行r'''(?<![Rr]evert ")[Rr]evert\s<change:[/][/]problem[/]\d{8}.*"'''
反面看:不希望在其后跟双双引号
的模式r'''[Rr]evert\s<change:[/][/]problem[/]\d{8}.*?\w"(?!")'''
如果在看各条线,看看在字符串的开始的图案 - 的三这是最工作,最有效的正则表达式引擎
r'''^[Rr]evert\s<change:[/][/]problem[/]\d{8}.*$'''
如果您正在寻找该行的嵌入式的中长字符串,但有在该行之前,你可以使用以前的模式与多标志一个换行符。