正则表达式 - 分组?

时间:2012-06-02 23:20:52

标签: regex

我真的可以使用一些帮助。我有以下两行。

<TD noWrap>Data: <B><SPAN class="TableBody clsBold">4</SPAN></B></TD>
<TD noWrap>Format: <B><SPAN class="TableBody clsBold">9</SPAN>/<SPAN class=TableBody> </SPAN></B></TD>

我需要抓住标签之间的文本(分别为4和9)

我正在使用以下正则表达式声明:

(\s)*(<B>)*<(?<SPAN>\w*)(?:.*)>(?:.*)</\k<SPAN>>

这适用于第一行,如:

Data: (\s)*(<B>)*<(?<SPAN>\w*)(?:.*)>(?:.*)</\k<SPAN>>

但不适用于

Format: (\s)*(<B>)*<(?<SPAN>\w*)(?:.*)>(?:.*)</\k<SPAN>>

因为它在我需要的部分之后抓住了SPAN,所以我没有得到第4组中的9。

如何使用具有不同前缀的相同Regex线获得我需要的东西。

1 个答案:

答案 0 :(得分:0)

我会在正则表达式中准确指出我正在寻找的内容。话虽这么说,这样的事情就足够了:

<TD noWrap>([A-Za-z]+:)\s*<B><SPAN class="TableBody clsBold">(\d+)</SPAN>

它只使用两个捕获组,因此您应该获得匹配("Data", "4")("Format", "9")