捕获前面的标记引用而不是实际的标记引用

时间:2016-10-04 14:52:10

标签: regex

我试图根据我们创建的自定义标签选择文本。

我想选择以下 BOLD 标记:

  

[AREA ROW,CHNO]您的卡将以欧元收费。[/ AREA] [AREA UK,   美国,香港]发现,[/ AREA]

但使用以下正则表达式:

\[AREA\s((.*),\sUS,\s.*)\].*?\[.AREA\]

选择完整的一行。我理解为什么它选择整行,但无法找到忽略第一个标记的方法。

  

[AREA ROW,CHNO]您的卡将以欧元收费。[/ AREA] [AREA UK,   美国,香港]发现,[/ AREA]

你能帮忙吗?

1 个答案:

答案 0 :(得分:2)

问题是在你的正则表达式.*[AREA\s之间存在贪婪的,\sUS,它匹配[AREA\s,\sUS之间的最长匹配。

您可以使用否定字符类使其仅匹配到下一个逗号:

\[AREA\s[^,]+,\sUS,\s.*?\].*?\[\/AREA\]

RegEx Demo