2016-07-28 43 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) 

而且使用捕获组“酒吧“,前者更适合替换,但不适用于所有正则表达式引擎。

相关问题