2016-07-28 77 views
0

我的標籤甚至下搜索,看看我是否可以返回問答&一個演示瞭如何在回顧後匹配數字1次或更多次。正則表達式回顧後1個或多個數字

我有HTML和我使用的BBEdit搜索:

<span class="foo">1.</span> bar 
<span class="foo">10.</span> bar 

(?<=<span class="foo">[0-9]\.<\/span>) bar(?<=<span class="foo">\d\.<\/span>) bar會發現:

<span class="foo">1.</span> bar 

(?<=<span class="foo">\d\d\.<\/span>) bar(?<=<span class="foo">[0-9][0-9]\.<\/span>) bar會發現:

<span class="foo">10.</span> bar 

但是,當我使用(?<=<span class="foo">[0-9]+\.<\/span>) bar(?<=<span class="foo">\d{1,2}\.<\/span>) bar我在BBEdit和regex101上遇到錯誤。使用BBEdit可以在lookbehind中找到一個或多個數字嗎?如果不支持什麼是替代解決方案?

+1

在大多數正則表達式引擎中'lookbehind'不能長度可變 – anubhava

+0

Regex101支持PCRE,JS,Python re flavor。嘗試在regexstorm.net上的最後一個正則表達式,它會工作,因爲它支持.NET風格。你的正規口味是什麼? –

+0

@WiktorStribiżew但它不會在基於python的BBEdit中工作。 –

回答

0

可變寬度lookbehinds沒有列在多數正則表達式引擎支持的,但是,你可以用兩個正則表達式的一個提取bar部分:

<span class="foo">\d+\.<\/span>\K bar 

或者

<span class="foo">(\d+)\.<\/span>(?<bar> bar) 

而且使用捕獲組「酒吧「,前者更適合替換,但不適用於所有正則表達式引擎。

相關問題