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

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

G[a-b].*

回答(10)

2 years ago

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

2 years ago

C#

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

具体来说: options: RegexOptions.IgnoreCase

2 years ago

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

std::tr1::wregex pattern(szPattern, std::tr1::regex_constants::icase);

if (std::tr1::regex_match(szString, pattern))
{
...
}

2 years ago

取决于实施,但我会使用

(?i)G[a-b].

2 years ago

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

(?i)(abc)

2 years ago

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

2 years ago

除了已经接受的答案:

Grep用法:

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

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

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

参考文献:

2 years ago

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

2 years ago

假设您希望 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字符,请检查您的正则表达式引擎是否正确支持它们 .

2 years ago

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

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