当我在这个字符串上使用负向前瞻
时1pt 22px 3em 4px
像这样
/\d+(?!px)/g
我得到了这个结果
(1, 2, 3)
我希望所有的22px都被丢弃,但我不知道该怎么做
答案 0 :(得分:3)
向前瞻添加数字图案:
\d+(?!\d|px)
请参阅regex demo
这样,在已经匹配一个或多个数字后,您将不允许数字匹配。
另一种方法是使用原子组解决方法,如
(?=(\d+))\1(?!px)
请参阅regex demo。在这里,(?=(\d+))
将一个或多个数字捕获到组1中,\1
反向引用将使用这些数字,从而防止回溯到\d+
模式。如果数字后跟(?!px)
并且无法回溯以获取px
,2
将无法匹配。
这两种解决方案都适用于re.findall
。