Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/393.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.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_Search_Partial - Fatal编程技术网

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

Java 如何编写防止部分匹配的正则表达式,java,regex,search,partial,Java,Regex,Search,Partial,如何构建一个正则表达式模式来搜索文本T并尝试查找搜索字符串S 有两个要求: S可以由任何字符组成 S可以是字符串中的任意位置,但不能是单词的一部分 我知道为了转义特殊的正则表达式字符,我将搜索字符串放在\Q和\E之间,如下所示: \EMySearch\u字符串\Q 如何防止在T中找到S的部分匹配?如果 不能是单词的一部分 被解释为 前面是字符串或空格的开头,后面是字符串或空格的结尾: String s = "3894$75\\/^()"; String text = "fdsfsd3894$75

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

有两个要求:

  • S可以由任何字符组成
  • S可以是字符串中的任意位置,但不能是单词的一部分
  • 我知道为了转义特殊的正则表达式字符,我将搜索字符串放在\Q和\E之间,如下所示:

    \EMySearch\u字符串\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() + "'");
    }
    
    String s=“3894$75\\/^()”;
    String text=“fdsfsd3894$75\\/^()dasdasd 22348 3894$75\\\/^()”;
    
    Matcher m=Pattern.compile(“(?我认为您试图查找的内容可以通过lookaheads和lookbehinds轻松解决

    然后有一些倒转布尔值,但您要向前和向后查找非空格字符(\s)。您不希望只查找空格字符,因为s可能位于字符串的开头或结尾。例如:

    (?<!\S)S(?!\S)
    

    (?你所说的“不能是一个单词的一部分”是什么意思?它是否意味着它必须是整个单词?你能给出一些正面和负面的例子吗?你看过解决这个问题的方法了吗?@vcetinick:
    \\b
    在这里不好,因为
    S
    可以包含任何字符。