正则表达式:非捕获组仍在捕获

时间:2018-07-15 09:11:01

标签: regex capturing-group

我有几个文本字符串,每个文本字符串两个。第二个单词可能会或可能不会被html标签“包围”。所以所有的字符串都看起来像这样:

s1 = "text string"

或类似这样:

s2 = "text <ignore me>string<ignore me>"

我想从两个字符串中提取文本(在两种情况下均为“文本字符串”),并且如果该字符串包含html标记,我想忽略它们以及它们之间的文本。

我知道我必须使用非捕获组。我尝试了以下正则表达式:

(\b\w+ (?:<.*?>)?\w+\b)(?:<.*?>)?

它对于不包含任何html标记的字符串很好用。但是,如果该字符串确实包含html标签,则尽管该组未捕获,但第一个标签仍包含在结果中。所以对于s2我得到:

"text <ignore me>string"

(包含第一个标签)。

我该如何解决?

谢谢。

0 个答案:

没有答案