我有一个很长的字符串,我需要找到所有最短的组。目前正在发生的事情是我得到了两组,其中一组包含其间的所有数据(根据需要可能更具体)。我无法理解我应该在正则表达式模式中改变什么来处理我的情况。
字符串 - "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
我的班级是 -
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);
}
}
答案 0 :(得分:1)
START[0-9]+(?:(?!\\bSTART).)*?/END TAG
您可以试试这个。请参阅演示。lookahead
不允许您的群组之间有其他START
。