python regex negative lookahead

时间:2017-04-03 20:15:30

标签: python regex

当我在这个字符串上使用负向前瞻

1pt 22px 3em 4px
像这样

/\d+(?!px)/g

我得到了这个结果

(1, 2, 3)

我希望所有的22px都被丢弃,但我不知道该怎么做

1 个答案:

答案 0 :(得分:3)

向前瞻添加数字图案:

\d+(?!\d|px)

请参阅regex demo

这样,在已经匹配一个或多个数字后,您将不允许数字匹配。

另一种方法是使用原子组解决方法,如

(?=(\d+))\1(?!px)

请参阅regex demo。在这里,(?=(\d+))将一个或多个数字捕获到组1中,\1反向引用将使用这些数字,从而防止回溯到\d+模式。如果数字后跟(?!px)并且无法回溯以获取px2将无法匹配。

这两种解决方案都适用于re.findall