Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/361.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何将字符串与单词之间带有“and”或“or”的单词进行匹配?_Java_Regex - Fatal编程技术网

Java 如何将字符串与单词之间带有“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

我有下面的字符串,其中包含单词and和or,或单词and和or之间的单词


请指导我如何创建一个正则表达式,以匹配包含一个或多个单词的字符串以及单词之间的和或。

您可以通过以下方式实现这一点:

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+)*