我有一长串,我需要找到所有最短的组。目前正在发生的事情是我要分成2组,其中一组包含之间的所有数据(可能根据需要更具体)。我不明白我应该在正则表达式模式中进行哪些更改以处理我的情况。
字串 -"aaa START1 value1 /END bbb START2 value2 /END TAG ccc START3 value3 /END TAG ddd"
"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
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); } }
START[0-9]+(?:(?!\\bSTART).)*?/END TAG
您可以尝试此操作。请参阅演示。lookahead这不会START在您的组之间出现另一个。
lookahead
START
https://regex101.com/r/cJ6zQ3/21