如何构建一个正在搜索文本T并尝试查找搜索字符串S的正则表达式模式。
有2个要求:
我知道为了逃避特殊的正则表达式字符,我把搜索字符串放在\ Q和\ E之间:
\ EMySearch_String \ Q
如何防止在T中找到S的部分匹配?
答案 0 :(得分:1)
如果是,你可以这样做
can't be part of a word
被解释为
preceded by start-of-string or space and followed by end-of-string or space
:
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() + "'");
}
这只打印一个
找到匹配! : '3894 $ 75 / ^()'
答案 1 :(得分:0)
我认为你想要找到的东西很容易通过前瞻和外观来解决。 Take a look at this for a good explanation.
然后有一些翻转的布尔值,但是你正在寻找前方和后方的NOT非空格字符(\ S)。您不希望仅查找空格字符,因为S可能位于字符串的开头或结尾。像这样:
(?<!\S)S(?!\S)