Skip to main content
 首页 » 编程设计

python正则表达式负前瞻

2024年08月20日35webabcd

当我在此字符串上使用负前瞻时

1pt 22px 3em 4px 

像这样

/\d+(?!px)/g 

我得到了这个结果

(1, 2, 3) 

我想丢弃所有 22px,但我不知道该怎么做

请您参考如下方法:

为前瞻添加一个数字模式:

\d+(?!\d|px) 

参见 regex demo

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

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

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

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

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