java - 如何编写防止部分匹配的正则表达式

标签 java regex search partial

如何构建一个正则表达式模式来搜索文本 T 并尝试查找搜索字符串 S。

有 2 个要求:

  1. S 可以由任何字符组成。
  2. 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/

相关文章:

jquery - 寻找正则表达式仅替换三位数后的空格

java - 绘制一个java类的依赖关系图

Java - 初始化对象数组列表时出错

java - 无法找到 'org.springframework.http.codec.ServerCodecConfigurer' 类型的 bean

r - 分解R中的长正则表达式

python - 用python逐句拆分列表

ios - 为搜索栏委托(delegate)赋值 - Swift

java - 如何按属性搜索对象数组 (Java)

api - 为什么 twitter 的自始至终参数不起作用?

java - 涉及计算 10 位数字拼图的算法