我正在尝试在java中找到一个正则表达式,它将提取连续的单词对 在传票中,如下例所示。
输入:word1 word2 word3 word4 ....
输出:
等。
任何想法如何做到这一点?
答案 0 :(得分:3)
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+");
然后为每对索引获取消息。