正则表达式迭代匹配所有以一个字符串开头并以另一个字符串结尾的字符串

时间:2017-05-06 14:06:36

标签: java regex replace replaceall

我正在尝试删除以字符串“GUGU”开头的所有序列的字符串,并以“AGAG”之类的结尾。我最接近的是

replaceAll("GUGU(.*)AGAG", "")

但所有这一切都取代了“最大”的实例。意味着如果字符串中出现多次GUGU * AGAG,则它仅匹配最外层。那么我该怎么做才能让字符串中的正则表达式的每个实例都能正常工作呢?

1 个答案:

答案 0 :(得分:0)

使用不情愿的而不是贪婪的量词(见the documentation):

String s = "hello GUGU hello AGAG hello GUGU hello AGAG";

// greedy
System.out.println(s.replaceAll("GUGU(.*)AGAG", ""));
// prints "hello "

// reluctant
System.out.println(s.replaceAll("GUGU(.*?)AGAG", ""));
// prints "hello  hello "