正则表达式,用于提取句子中的连续单词

时间:2012-11-22 22:14:27

标签: java regex

我正在尝试在java中找到一个正则表达式,它将提取连续的单词对 在传票中,如下例所示。

输入:word1 word2 word3 word4 ....

输出

  • word1 word2
  • word2 word3
  • word3 word4

等。

任何想法如何做到这一点?

4 个答案:

答案 0 :(得分:3)

Java代码:

Matcher m = Pattern.compile("(?:^|(?<=\\s))(?=(\\S+\\s+\\S+)(?=\\s|$))")
  .matcher("word1 word2 word3 word4");
while (m.find()) {
  System.out.println(m.group(1));
}

输出:

word1 word2
word2 word3
word3 word4

测试此代码 here

答案 1 :(得分:0)

你在这里:

public class Example {
    public static void main(String[] args) {
        String words = "word1 word2 word3 word4";
        String regex="\\w+\\s+\\w+";
        Pattern p = Pattern.compile(regex);
        Matcher matcher = p.matcher(words);
        while(matcher.find()){
            String found = matcher.group();
            System.out.println(found);
            String splitted = found.split("\\s+")[1];
            words = words.replace(found, splitted);
            matcher = p.matcher(words);
        }
    }
}

答案 2 :(得分:0)

提供没有不合理复杂性的解决方案......

final String in = "word1 word2 word3 word4";
final String[] words = in.split("\\s+");
for (int i = 0; i < words.length - 1; i++)
  System.out.println(words[i] + " " + words[i+1]);

打印

word1 word2
word2 word3
word3 word4

答案 3 :(得分:-1)

你去: -

"\\w+\\s+\\w+"

一个或多个单词,然后是一个或多个空格,然后是一个或多个单词。


更新: -

注意到上面的正则表达式错过了你的第二行输出。 因此,您可以在space上拆分字符串,并使用您的数组。

String[] words = str.split("\\s+");

然后为每对索引获取消息。