Java 带有不区分大小写前缀的正则表达式

Java 带有不区分大小写前缀的正则表达式,java,regex,pattern-matching,Java,Regex,Pattern Matching,我正在尝试创建一个不区分大小写前缀的正则表达式。我有以下几点,但我不确定这是否正确: String value1 = "97 ebt ue i ua so sufi iqc k"; String pattern1 = "(?=(\\b(?i:.*s.*)))(?=(\\b(?i:.*q.*)))"; 在我的示例中,我试图在value1中找到pattern1的匹配项。据我所知: \\b匹配字符串中的任何单词 :.*和*不区分大小写 这在某些情况下有效,但在其他情况下失败。我搞不懂这个问题 更新:

我正在尝试创建一个不区分大小写前缀的正则表达式。我有以下几点,但我不确定这是否正确:

String value1 = "97 ebt ue i ua so sufi iqc k";
String pattern1 = "(?=(\\b(?i:.*s.*)))(?=(\\b(?i:.*q.*)))";
在我的示例中,我试图在
value1
中找到
pattern1
的匹配项。据我所知:

  • \\b
    匹配字符串中的任何单词
  • :.*
    *
    不区分大小写
  • 这在某些情况下有效,但在其他情况下失败。我搞不懂这个问题

    更新:


    本例返回true,但应返回false。问题是,应该有以
    s
    结尾的单词,还有一个以
    q
    结尾的单词,因此,由于没有任何单词以任何一个结尾,因此它应该失败。

    这个
    \\b
    结构只是一个单词边界,它与一个单词不匹配

    (?i)
    可以在开头只使用一次,并且整个模式不区分大小写

    问题是,应该有以
    s
    结尾的单词,还有一个以
    q
    结尾的单词,所以既然没有任何单词以任何一个结尾,那么它应该失败

    使用

    在这里,我们有两个锚定的look ahead,需要在输入字符串中包含以
    q
    s
    结尾的两个单词(不区分大小写)

    以下是:


    如果您想知道什么是
    ?U
    意味着它只是“修复”Unicode字符串中的
    \b
    单词边界。如果您不使用拉丁语以外的任何字母,可以删除
    U

    您要查找的输出是什么<代码>\\b只是一个单词边界,它与单词不匹配<代码>(?i)可以在开始时只使用一次,并且整个模式不区分大小写。它可以处理哪些情况,哪些情况失败。你能举一些例子吗?我已经更新了我的问题,请张贴完整的相关代码。如果你正在寻找“以S结尾”和“以Q结尾”,那么在每一个模式组的结尾都有错误。
    (?Ui)^(?=.*s\\b)(?=.*q\\b)
    
    String value1 = "97 ebts ue i ua so sufi iqc k";
    String pattern1 = "(?Ui)^(?=.*s\\b)(?=.*q\\b)";
    Pattern ptrn = Pattern.compile(pattern1);
    Matcher matcher = ptrn.matcher(value1);
    if (matcher.find())
        System.out.println("true");
    else
        System.out.println("false");