Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/395.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 重复匹配以一个字符串开始并以另一个字符串结束的所有字符串的正则表达式_Java_Regex_Replace_Replaceall - Fatal编程技术网

Java 重复匹配以一个字符串开始并以另一个字符串结束的所有字符串的正则表达式

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"; //

我试着去掉一个以字符串“GUGU”开头,以类似“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 "