正则表达式在文本中的标签之间找到重复标签的单词

时间:2015-10-29 03:05:05

标签: java regex string replace tags

我正在使用Matcher。

鉴于此字符串:

Hi, I am a [l=BANANA] and I am [l=YELLOW]

我试过

\\[l=(.+)\]\ 

但在这种情况下,Matcher.group(1)是

l=BANANA] and I am [l=YELLOW

相反,我希望Matcher.group(1)成为

BANANA

和Matcher.group(2)

YELLOW

无论如何......我想要做的是消除[l =]标签,所以如果有转换方法

Hi, I am a [l=BANANA] and I am [l=YELLOW]

Hi, I am a BANANA and I am YELLOW

太棒了!

1 个答案:

答案 0 :(得分:2)

这是因为.+ 贪婪,这意味着它会尝试匹配尽可能多的字符。

你应该让它不情愿,即.+?,这意味着它会尝试匹配尽可能少的字符。

更好的是,将.替换为"除了]"表达,即

"\\[l=([^\\]]+)\\]"

这是使用正则表达式将字符串匹配到分隔符的常用方法。

Demo.