我有来自较早问题的以下 Python 正则表达式模式:
regex_pat = re.compile('''
(
[a-zA-Z\*]*
\*
[a-zA-Z\*]*
)+
''', re.VERBOSE)
现在,如果任何数字与“单词”混合在一起,尤其是在开头或结尾,我希望匹配失败。
text = '''
(A) Match these:
*** star* st**r
(B) Not these:
800*m *4,500
(C) And not these:
800**m **4,000
'''
通过在各个地方尝试一对否定前瞻和否定后视,我可以摆脱 (B) 匹配,但不能摆脱 (C) 匹配。例如:
regex_pat = re.compile('''
(
[a-zA-Z\*]*
(?<!\d)
\*
(?!\d)
[a-zA-Z\*]*
)+
''', re.VERBOSE)
regex_pat.findall(text)
# ['***', 'star*', 'st*r', '**m', '**'] The last two matches are no good.
显然,当正则表达式遇到负前瞻时,它会退后一步,看看它是否可以匹配。可以这么说,我怎样才能使消极的环顾变得更贪婪或更具有破坏性?
RISEBY
SMILET
相关分类