小编典典

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

java

我有一长串,我需要找到所有最短的组。目前正在发生的事情是我要分成2组,其中一组包含之间的所有数据(可能根据需要更具体)。我不明白我应该在正则表达式模式中进行哪些更改以处理我的情况。

字串 -"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);
    }
}

阅读 206

收藏
2020-11-26

共1个答案

小编典典

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

您可以尝试此操作。请参阅演示。lookahead这不会START在您的组之间出现另一个。

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

2020-11-26