使用正则表达式在字符串中获取最短的组

我有一个很长的字符串,我需要找到所有最短的组。 目前正在发生的事情是我得到两组,其中一组包含其间的所有数据(根据需要可能更具体)。 我无法理解我应该在正则表达式模式中改变什么来处理我的情况。

字符串"aaa START1 value1 /END bbb START2 value2 /END TAG ccc START3 value3 /END TAG ddd"

预期START2 value2 /END TAG , START3 value3 /END TAG
实际START1 value1 /END bbb START2 value2 /END TAG , START3 value3 /END TAG

我的class级是 –

 import java.util.regex.Matcher; import java.util.regex.Pattern; public class Reg { public static void main(String[] args) { String response = "aaa START1 value1 /END bbb START2 value2 /END TAG ccc START3 value3 /END TAG ddd"; StringBuilder sb1 = new StringBuilder(); Pattern p = Pattern.compile("START[0-9]+(.*?)/END TAG"); Matcher matcher1 = p.matcher(response); while (matcher1.find()) { sb1.append(matcher1.group()).append(" , "); } System.out.println(sb1); } } 

 START[0-9]+(?:(?!\\bSTART).)*?/END TAG 

你可以尝试这个。看看演示。预测将不允许你的组之间的另一个START

https://regex101.com/r/cJ6zQ3/21