找到重叠的正则表达式模式

时间:2018-02-22 21:49:38

标签: java regex

我正在使用正则表达式来查找模式

我需要以这种方式找到所有比赛:

输入:“word1_word2_word3 _...”

结果:“word1_word2”,“word2_word3”,“word4_word5”..

2 个答案:

答案 0 :(得分:2)

可以使用(?=)肯定前瞻来完成。

正则表达式(?=(?:_|^)([^_]+_[^_]+))

Java代码:

String text = "word1_word2_word3_word4_word5_word6_word7";
String regex = "(?=(?:_|^)([^_]+_[^_]+))";

Matcher matcher = Pattern.compile(regex).matcher(text);

while (matcher.find()) {
     System.out.println(matcher.group(1));
}

输出:

word1_word2
word2_word3
word3_word4
...

Code demo

答案 1 :(得分:1)

您可以使用split

在没有正则表达式的情况下执行此操作
    String input = "word1_word2_word3_word4";
    String[] words = input.split("_");
    List<String> outputs = new LinkedList<>();
    for (int i = 0; i < words.length - 1; i++) {
        String first = words[i];
        String second = words[i + 1];
        outputs.add(first + "_" + second);
    }

    for (String output : outputs) {
        System.out.println(output);
    }