正则表达式:忽略区分大小写

loading...


189

如何使以下正则表达式忽略区分大小写?它应匹配所有正确的字符,但忽略它们是低级还是大写 .

G[a-b].*
10回答

  • 281

    i 标志通常用于不区分大小写 . 你不要't give a language here, but it' ll可能像 /G[a-b].*/i .


  • 3

    C#

    using System.Text.RegularExpressions;
    ...    
    Regex.Match(
        input: "Check This String",
        pattern: "Regex Pattern",
        options: RegexOptions.IgnoreCase)
    

    具体来说: options: RegexOptions.IgnoreCase


  • 87

    为了完整起见,我想在C中使用Unicode添加正则表达式的解决方案:

    std::tr1::wregex pattern(szPattern, std::tr1::regex_constants::icase);
    
    if (std::tr1::regex_match(szString, pattern))
    {
    ...
    }
    

  • 13

    取决于实施,但我会使用

    (?i)G[a-b].
    

  • 0

    用于验证'abc'的正则表达式忽略区分大小写

    (?i)(abc)
    

  • 38

    您还可以将您要检查模式匹配的初始字符串引导到小写字母 . 并分别在您的模式中使用小写符号 .


  • 45

    除了已经接受的答案:

    Grep用法:

    请注意,对于 grep ing,只需添加 -i 修饰符即可 . 例如: grep -rni regular_expression 以递归方式搜索'regular_expression' 'r',案例'i' nsensitive,在结果中显示行'n' umbers .

    此外,这是一个验证正则表达式的好工具:https://regex101.com/

    例如:请参见此图像中的表达式和说明 .

    参考文献:


  • 0

    [gG] [aAbB] . *如果模式不太复杂或太长,可能是简单的解决方案 .


  • 0

    假设您希望 whole 正则表达式忽略大小写,您应该查找i flag . 几乎所有正则表达式引擎都支持它:

    /G[a-b].*/i
    
    string.match("G[a-b].*", "i")
    

    查看语言/平台/工具的文档,了解如何指定匹配模式 .

    如果你只想让 part 的正则表达式不区分大小写(假设我的原始答案),那么你有两个选择:

    • 使用 (?i) 和[可选] (?-i) 模式修改器:
    (?i)G[a-b](?-i).*
    
    • 将所有变体(即小写和大写)放在正则表达式中 - 如果不支持模式修饰符,则非常有用:
    [gG][a-bA-B].*
    

    最后一点:如果您处理除ASCII之外的Unicode字符,请检查您的正则表达式引擎是否正确支持它们 .


  • 1

    正如我从这篇类似的帖子(ignorecase in AWK)中发现的,在旧版本的awk上(例如在香草Mac OS X上),你可能需要使用 'tolower($0) ~ /pattern/' .

    IGNORECASE(?i)/pattern/i 将生成错误或为每一行返回true .

评论

loading...

暂时没有评论!