Java 重复匹配以一个字符串开始并以另一个字符串结束的所有字符串的正则表达式
我试着去掉一个以字符串“GUGU”开头,以类似“AGAG”结尾的所有序列。我得到的最接近的是Java 重复匹配以一个字符串开始并以另一个字符串结束的所有字符串的正则表达式,java,regex,replace,replaceall,Java,Regex,Replace,Replaceall,我试着去掉一个以字符串“GUGU”开头,以类似“AGAG”结尾的所有序列。我得到的最接近的是 replaceAll("GUGU(.*)AGAG", "") 但所做的只是替换“最大”的实例。这意味着,如果一个字符串中多次出现GUGU*AGAG,则它只匹配最外层的。那么,我该怎么做才能让它对字符串中的每个正则表达式实例都起作用呢 使用不情愿的量词而不是贪婪的量词(请参阅): String s = "hello GUGU hello AGAG hello GUGU hello AGAG"; //
replaceAll("GUGU(.*)AGAG", "")
但所做的只是替换“最大”的实例。这意味着,如果一个字符串中多次出现GUGU*AGAG,则它只匹配最外层的。那么,我该怎么做才能让它对字符串中的每个正则表达式实例都起作用呢 使用不情愿的量词而不是贪婪的量词(请参阅):
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 "