不会工作,如何解决这个问题?我需要得到这个号码。 Foo可以与空间或没有空间蜂。
(?<=Foo:\s?</b>).+\d
<b>Foo:</b>2013<br><b>Bar:</b>
<b>Foo: </b>2013<br><b>Bar:</b>
答案 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+