Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.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正则表达式:匹配模式中的任何单词_Java_Regex - Fatal编程技术网

Java正则表达式:匹配模式中的任何单词

Java正则表达式:匹配模式中的任何单词,java,regex,Java,Regex,我正在尝试实现一个搜索功能。 用户键入一个短语,我希望将该短语中的任何单词与字符串数组中的短语本身进行匹配。 问题是短语存储在变量中,因此Pattern.compile方法不会解释其特殊字符 我正在为compile方法使用以下标志: Pattern.CASE|u不区分大小写| Pattern.UNICODE|u大小写| Pattern.LITERAL| 模式。多行 我怎样才能达到预期的结果 提前谢谢 编辑: 例如,短语: “狗猫甜甜圈” 将导致以下模式: 狗|猫|甜甜圈|狗猫甜甜圈 通过\s+将

我正在尝试实现一个搜索功能。 用户键入一个短语,我希望将该短语中的任何单词与字符串数组中的短语本身进行匹配。 问题是短语存储在变量中,因此
Pattern.compile
方法不会解释其特殊字符

我正在为compile方法使用以下标志:

Pattern.CASE|u不区分大小写| Pattern.UNICODE|u大小写| Pattern.LITERAL| 模式。多行

我怎样才能达到预期的结果

提前谢谢

编辑: 例如,短语:

“狗猫甜甜圈”

将导致以下模式:

狗|猫|甜甜圈|狗猫甜甜圈

  • 通过
    \s+
    将用户指定的短语拆分为,例如,
    arr
  • 构建以下模式:

    "\\b(?:" + Pattern.quote(arr[0]) + "|" + Pattern.quote(arr[1]) + "|" + Pattern.quote(arr[2]) + ... + "\\b"
  • 通过
    \s+
    将用户指定的短语拆分为,例如,
    arr
  • 构建以下模式:

    "\\b(?:" + Pattern.quote(arr[0]) + "|" + Pattern.quote(arr[1]) + "|" + Pattern.quote(arr[2]) + ... + "\\b" 试试这个:

    String regex = "\\b(" + phrase + "|" + phrase.replaceAll("\\s+", "|") + ")\\b"; 
    
    在行动中:

    String phrase = "Dog cats donuts";
    String regex = "\\b(" + phrase + "|" + phrase.replaceAll("\\s+", "|") + ")\\b"; 
    System.out.println(regex);
    
    输出:

    \b(Dog cats donuts|Dog|cats|donuts)\b
    
    试试这个:

    String regex = "\\b(" + phrase + "|" + phrase.replaceAll("\\s+", "|") + ")\\b"; 
    
    在行动中:

    String phrase = "Dog cats donuts";
    String regex = "\\b(" + phrase + "|" + phrase.replaceAll("\\s+", "|") + ")\\b"; 
    System.out.println(regex);
    
    输出:

    \b(Dog cats donuts|Dog|cats|donuts)\b
    

    编辑以添加示例。编辑以添加示例。在正则表达式字符串的最后部分中缺少一个“')。在正则表达式字符串的最后部分中缺少一个“')。