當我使用負向前查找此字符串蟒蛇正則表達式負先行
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