如何编写正则表达式确保后面没有数字

时间:2015-04-07 13:40:10

标签: python regex

我想要一个用x**1替换x的正则表达式,但是有一个问题。我写过这个正则表达式:

r'\b[a-z][*]{2}1[ ]?'

但它取代了x**10' with x0`。

我想要一个执行此过程的正则表达式,并确保1之后没有数字,例如10100

1 个答案:

答案 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