正则表达式捕获子字符串,同时省略某些子字符串

Regex capture substrings while omitting certain substring

我想使用正则表达式从以下 html 中捕获颜色、动物和国家/地区。但是,对于国家/地区,可能性 <br> 标记存在于国家/地区名称之前,例如我的示例中的 SPAIN。我想省略那个 <br> 标签,以便只捕获“西班牙”。

<p><span class="w">RED</span><br><span class="a">DOG</span>USA</p>
<p><span class="w">GREEN</span><br><span class="a">CAT</span><br>SPAIN</p>
<p><span class="w">BLUE</span><br><span class="a">MOUSE</span>FRANCE</p>

我有以下正则表达式,但它没有省略国家 <br> 标签:

/<p><span class="w">(.*)<\/span><br><span class="a">(.*)<\/span>(.*)<\/p>/

请帮忙。

试试这个:

<p><span class="w">(.*)<\/span><br><span class="a">(.*)<\/span>(?:<br>)?(.*)<\/p>

(?:...) : non-capturing 组。

? : 0 或 1 次

检查模式:Regex101

你可以尝试只匹配><

之间的内容
(?<=>)([[:upper:]]+)(?=<)

View Demo