python正则表达式负前瞻

2024-04-19 21:15:45 发布

您现在位置:Python中文网/ 问答频道 /正文

当我对这个字符串使用负向前看时

1pt 22px 3em 4px

像这样

/\d+(?!px)/g

我得到这个结果

(1, 2, 3)

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


Tags: 字符串px
1条回答
网友
1楼 · 发布于 2024-04-19 21:15:45

将数字模式添加到前瞻:

\d+(?!\d|px)

regex demo

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

另一种方法是使用一个原子组像

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

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

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

相关问题 更多 >