如何构建一个正则表达式模式来搜索文本 T 并尝试查找搜索字符串 S。
有 2 个要求:
- S 可以由任何字符组成。
- S 可以位于字符串中的任何位置,但不能是单词的一部分。
我知道为了转义特殊的正则表达式字符,我将搜索字符串放在\Q 和\E 之间,如下所示:
\EMySearch_String\Q
如何防止在 T 中找到 S 的部分匹配?
最佳答案
如果
你可以这样做
不能成为单词的一部分
被解释为
前面是字符串开头或空格,后面是字符串结尾或空格
:
String s = "3894$75\\/^()";
String text = "fdsfsd3894$75\\/^()dasdasd 22348 3894$75\\/^()";
Matcher m = Pattern.compile("(?<=^|\\s)\\Q" + s + "\\E(?=\\s|$)").matcher(text);
while (m.find()) {
System.out.println("Found match! :'" + m.group() + "'");
}
这只打印一个
Found match! :'3894$75/^()'
关于java - 如何编写防止部分匹配的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11497926/