Question

wont work, how to fix this problem? I need to get the number. Foo can bee with space or without space.

(?<=Foo:\s?</b>).+\d
<b>Foo:</b>2013<br><b>Bar:</b>
<b>Foo: </b>2013<br><b>Bar:</b>
Was it helpful?

Solution

The problem is that variable length lookbehind are not allowed in many languages, however some languages allow to put alternatives inside:

If you don't use Python or javascript, try this:

(?<=Foo:\s</b>|Foo:</b>).+\d

If you use Perl or PHP you can do this too:

Foo:\s?</b>\K.+\d

(but the difference in this second pattern is that Foo:\s?</b> are matched and remove from the match result. Thus if you need to match these characters before you can't use this way)

OTHER TIPS

If the engine you're using only supports 'fixed' length lookbehind assertions, you could just stack up two of them. If there could be an unknown number of spaces, this won't work.

 # (?:(?<=Foo:</b>)|(?<=Foo:\s</b>))\d+

 (?:
      (?<= Foo:</b> )
   |  (?<= Foo: \s </b> )
 )
 \d+ 
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top