Java 如何将字符串与单词之间带有“and”或“or”的单词进行匹配?
我有下面的字符串,其中包含单词and和or,或单词and和or之间的单词Java 如何将字符串与单词之间带有“and”或“or”的单词进行匹配?,java,regex,Java,Regex,我有下面的字符串,其中包含单词and和or,或单词and和or之间的单词 请指导我如何创建一个正则表达式,以匹配包含一个或多个单词的字符串以及单词之间的和或。您可以通过以下方式实现这一点: System.out.println(Arrays.toString("Apple and Mango or Banana or Lichi and Potato or blackberry".split("and|or"))); 输出 [苹果、芒果、香蕉、荔枝、土豆、黑莓] 希望这有帮助 Stri
请指导我如何创建一个正则表达式,以匹配包含一个或多个单词的字符串以及单词之间的和或。您可以通过以下方式实现这一点:
System.out.println(Arrays.toString("Apple and Mango or Banana or Lichi and Potato or blackberry".split("and|or")));
输出
[苹果、芒果、香蕉、荔枝、土豆、黑莓]
希望这有帮助
String s = "Apple and Mango or Banana or Lichi and Potato or blackberry";
String fruit = "(Apple|Banana|blackberry|Lichi|Mango|Potato)";
Pattern pattern = Pattern.compile("(" + fruit + " (and|or) )+" + fruit);
Matcher m = pattern.matcher(s);
if (m.matches()) {
System.out.println("Matches");
int n = m.groupCount();
for (int i = 1; i <= n; ++i) {
System.out.printf("[%d] %s%n", i, m.group(i));
}
} else {
System.out.println("No match");
}
Matches
[1] Potato or
[2] Potato
[3] or
[4] blackberry
有关信息和说明,请参阅
\w+( (and|or) \w+)*
你想从中得到什么?多少个单词?是和还是固定的?也就是说,您想要这个模式:word+和+word+或+word+或+word+和+word+或+word。或者,你想用和/或分隔任意数量的单词吗?我想用正则表达式匹配上述字符串。用和/或分隔任意数量的单词。你想匹配这行吗?苹果和芒果香蕉荔枝?如果你知道的话。。StringSplit只使用正则表达式。哦,现在我不够清楚,抱歉:D我的意思是他想要匹配字符串,而不是将其拆分为数组。
\w+( (and|or) \w+)*