正面背后正则表达式内的空格

时间:2013-11-23 16:56:51

标签: regex lookbehind

不会工作,如何解决这个问题?我需要得到这个号码。 Foo可以与空间或没有空间蜂。

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

2 个答案:

答案 0 :(得分:1)

问题在于,在许多语言中不允许使用可变长度的后视,但是有些语言允许在内部放置替代品:

如果您不使用Python或javascript,请尝试以下方法:

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

如果你使用Perl或PHP,你也可以这样做:

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

(但第二种模式的不同之处在于Foo:\s?</b>匹配并从匹配结果中删除。因此,如果您需要匹配这些字符,则不能使用此方式)

答案 1 :(得分:1)

如果你使用的引擎只支持“固定”长度的后视断言,你可以将它们中的两个叠加起来。如果可能存在未知数量的空格,则无效。

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

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