Regex 捕获前面的标记引用而不是实际的标记引用
我碰到了一堵砖墙,试图根据我们创建的自定义标记选择文本 我想选择以下粗体标记: [AREA ROW,CHNO]您的卡将以欧元计价。[/AREA][AREA UK, 美国,香港]发现,[/AREA] 但使用以下正则表达式:Regex 捕获前面的标记引用而不是实际的标记引用,regex,Regex,我碰到了一堵砖墙,试图根据我们创建的自定义标记选择文本 我想选择以下粗体标记: [AREA ROW,CHNO]您的卡将以欧元计价。[/AREA][AREA UK, 美国,香港]发现,[/AREA] 但使用以下正则表达式: \[AREA\s((.*),\sUS,\s.*)\].*?\[.AREA\] 它正在选择完整的行。我理解它为什么选择整行,但无法找到忽略第一个标记的方法 [AREA ROW,CHNO]您的卡将以欧元计价。[/AREA][AREA UK, 美国,香港]发现,[/AREA] 你能
\[AREA\s((.*),\sUS,\s.*)\].*?\[.AREA\]
它正在选择完整的行。我理解它为什么选择整行,但无法找到忽略第一个标记的方法
[AREA ROW,CHNO]您的卡将以欧元计价。[/AREA][AREA UK,
美国,香港]发现,[/AREA]
你能帮忙吗?问题是在正则表达式中存在贪心的
*
在[AREA\s
和,\sUS
之间,它匹配[AREA\s
和,\sUS
之间最长的匹配
您可以使用否定字符类,使其仅在下一个逗号之前匹配:
\[AREA\s[^,]+,\sUS,\s.*?\].*?\[\/AREA\]
谢谢你的回复,虽然我喜欢正则表达式,但我并不经常这样做。谢谢你解释我失败的原因!我现在将把这个逻辑用于其他表达式。非常有用。