也提供了一个没有不合理复杂性的解决方案。。。
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
给你:
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);
}
}
}
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
在此处测试此代码。
我正在寻找一个C#regex来匹配一个句子中的完整单词。 我的句子和句型如下所示。 我没有得到任何匹配使用上述模式。 但如果我用这个模式,我会得到一个匹配。 但问题是它匹配连字符分隔的单词,如在疼痛,我正在寻找一个完整的单词。 谢谢你的帮助
问题内容: 我想提取所有 用 大括号括起来的 单词 ,所以我有一个这样的表达式 匹配的字符串可能包含任意多个这样的单词,但是我开始认为我正在以错误的方式解决此问题。 我的尝试 而且我尝试将花括号这些词提取为组,以便可以使用每一个匹配项。所以,我做了一个正则表达式: 注意:我使用的是JRegex语法,因此我需要避免掉一些curl。 结果 我得到的结果是一个(虽然是正确的)比赛,而我希望有两个比赛和。
问题内容: 我如何使它对任何数字格式和任何数字都有效 目前仅对1-999-999-9999有效 问题答案: 采用: 参考: 模式匹配
问题内容: 我想在Elastisearch中使用单词边界进行正则表达式查询,但是看起来Lucene正则表达式引擎不支持。我可以使用哪些解决方法? 问题答案: 在ElasticSearch regex风格中,没有直接等效于单词边界的功能。最初是一样的东西,如果用一个字字符开始,并且尾部就像如果用一个字字符结束。 因此,我们需要确保在字符串的前后或字符串的开始/结束处有一个非单词char 。由于正则表
我正在尝试抓取模式中第一个连字符之后的文本 但在此模式中: 我希望它跳过‘不想要的’文本,并匹配的文本后面的下一个连字符(DesiredText)。我创建了一个具有两种模式regex101,并需要修改我的基本regex,以便如果中存在一个或多个我不想匹配的单词,那么它将匹配第二个连字符文本: https://regex101.com/r/vesqh3/1
Perl6正则表达式匹配连接 它为False,因为连词中的“23”与$a中的“23”子字符串匹配,但此子字符串与连词中的“ef”不匹配。这有点违反直觉,因为它更容易解释$a ~~ m/23 如果我有n个正则表达式,我想看看是否所有这些n个正则表达式都匹配相同的整个字符串,而不是匹配整个字符串的相同子字符串部分,那么编写perl6表达式的最佳方法是什么? 在例子中,我真的想做 如果正则表达式的数量很