2016-07-28 23 views
0

ich unter den Tags gesucht haben , und sogar , um zu sehen, ob ich einen Q & A zurückgeben können, die zeigt, wie Zahlen übereinstimmen 1 oder mehrmals in einem Lookbehind.Regex Lookbehind mit 1 oder mehr Zahlen

Ich habe HTML und ich bin mit BBEdit suchen:

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

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

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

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

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

Aber wenn ichbenutzeund (?<=<span class="foo">\d{1,2}\.<\/span>) bar Ich erhalte einen Fehler in BBEdit und regex101. Ist es möglich, mit BBEdit eine oder mehrere Zahlen in einem Look-Behind zu finden? Wenn es nicht unterstützt wird, was ist eine alternative Lösung?

+1

'lookbehind' kann in den meisten Regex-Engines keine variable Länge haben – anubhava

+0

Regex101 unterstützt PCRE, JS, Python re-Varianten. Versuchen Sie Ihre letzte Regex bei regexstorm.net und es wird funktionieren, weil es die .NET-Variante unterstützt. Was ist dein Regex-Geschmack? –

+0

@ WiktorStribiżew aber es funktioniert nicht in BBEdit, die auf Python basiert. –

Antwort

0

variabler Breite Lookbehinds nicht in den meist Regex-Engines unterstützt werden, jedoch können Sie den bar Teil mit einem von zwei regulären Ausdrücke extrahieren:

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

Oder

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

Und mit Erfassung Gruppe " bar ", die besser zum Ersetzen geeignet ist, aber nicht in allen Regex-Engines funktioniert.