当我使用负向前查找此字符串蟒蛇正则表达式负先行
1pt 22px 3em 4px
这样
/\d+(?!px)/g
我得到这样的结果
(1, 2, 3)
,我想所有的22px来被丢弃,但我不知道我该怎么做
当我使用负向前查找此字符串蟒蛇正则表达式负先行
1pt 22px 3em 4px
这样
/\d+(?!px)/g
我得到这样的结果
(1, 2, 3)
,我想所有的22px来被丢弃,但我不知道我该怎么做
添加一个数字模式先行:
\d+(?!\d|px)
这样一来,你就不会允许一个数字匹配后的1个或多个数字已经匹配。
另一种方法是使用的原子团的工作周围像
(?=(\d+))\1(?!px)
见regex demo。在这里,(?=(\d+))
将一个或多个数字捕获到组1中,并且反向引用将消耗这些数字,从而防止回溯到\d+
模式。如果数字跟在px
之后,(?!px)
将无法匹配,并且无法回溯到2
。
这两种解决方案将与re.findall
一起使用。
请参阅[Python演示](http://ideone.com/95npxQ)。记住在声明正则表达式模式时使用原始字符串文字('r'pattern'')。 –
如果这些字母一直存在,只需使用'\ d +(?! px)[a-z] +' – sln