2024-04-19 21:15:45 发布
网友
当我对这个字符串使用负向前看时
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
(?=(\d+))
\1
\d+
px
(?!px)
2
这两种解决方案都适用于re.findall
re.findall
将数字模式添加到前瞻:
见regex demo
这样,在1个或多个数字已经匹配后,您将不允许数字匹配
另一种方法是使用一个原子组像
见regex demo。这里,
(?=(\d+))
将一个或多个数字捕获到组1中,并且\1
回溯引用将使用这些数字,从而防止回溯到\d+
模式中。如果数字后面跟有px
,则(?!px)
将无法匹配,并且无法回溯以获取2
这两种解决方案都适用于
re.findall
相关问题 更多 >
编程相关推荐