使用条件捕获正则表达式组

时间:2011-03-31 08:20:33

标签: regex

我有一个正则表达式,将html打破为我和平所必需的。我不会介绍整个正则表达式,因为它太长了。简而言之,它是一个多行表格单元格逐行解析器。最近我遇到了麻烦:解析页面的布局已经改变,所以我开始重新制作正则表达式以适应新的布局,但我发现在某些行的特定单元格中需要的布局包装数据可能会有所不同。 / p>

我们有什么?

单元格的布局可能类似于this或类似this

这引出了我的问题:如何捕获所需数据并且没有其他不必要的组?

这里描述的regexp中的条件为regular-expressions.info/conditional.html,我已经阅读了它但仍然没有线索。

2 个答案:

答案 0 :(得分:2)

这应该有帮助:)

<td class='(?:class1|class2)'>\s*((?=\w).*)\s*</td>

答案 1 :(得分:1)

编辑:接管了regexhacks表达式,因为它是一个更好的解决方案。

不确定,但也许您正在寻找用作(?:)的non-capturing组。因此你可以做到

<td class='class(?:1|2)'>\s*((?=\w).*)\s*</td>

嗯,在这个例子中你不需要这些组:

<td class='class[12]'>\s*((?=\w).*)\s*</td>

但在更复杂的情况下,您可以使用它们。

参见示例:rubular

但这可能不是你想要的。你能给出一个更精确的问题例子吗?