(正则表达式)如果存在定界符则捕获两个子串,否则捕获一个子串和空白

(Regex) capture two substrings if delimiter exists, otherwise one substring and blank

我想使用正则表达式将两个子字符串捕获到两个单独的捕获组中。 Country 和 City 之间的分隔符是“■”(space 后跟一个黑色方块)。如果分隔符不存在,则意味着没有城市,在这种情况下,它应该捕获一个空白值。正文如下:

<p>USA</p>
<p>SPAIN ■Madrid</p>
<p>FRANCE</p>

我有以下正则表达式,它捕获 <p> 标签之间的所有内容:

/<p>(.+)<\/p>/

如何分别捕获国家和城市(如果没有分隔符,则为空白城市)?

尝试:

/<p>(.+?)(?:\s■(.+))?<\/p>/

(.+?) 是第一个捕获组。 ? 使得不干扰空格变得懒惰。 由于 ?:,第二组是 non-capture 组,它包含第二个捕获组 (.+) non-capture 组之后的 ? 使整个结构可选,以防没有城市。