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
\s+
将用户指定的短语拆分为,例如,arr
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
编辑以添加示例。编辑以添加示例。在正则表达式字符串的最后部分中缺少一个“')。在正则表达式字符串的最后部分中缺少一个“')。