我想要一个用x**1
替换x
的正则表达式,但是有一个问题。我写过这个正则表达式:
r'\b[a-z][*]{2}1[ ]?'
但它取代了x**10' with
x0`。
我想要一个执行此过程的正则表达式,并确保1
之后没有数字,例如10
或100
。
答案 0 :(得分:4)
使用否定先行断言:
r'\b[a-z][*]{2}1(?!\d)'
(?!...)
部分是前瞻性的;它声明它无法匹配数字(\d
)所在的任何位置。
Regex101 demo;注意只有第二行匹配(蓝色)。
Python演示:
>>> import re
>>> pattern = re.compile(r'\b[a-z][*]{2}1(?!\d)')
>>> pattern.search('x**1')
<_sre.SRE_Match object at 0x10869f1d0>
>>> pattern.search('x**10') is None
True
>>> pattern.search('x**10') is None