正则expression式:忽略大小写

我如何使下面的正则expression式忽略区分大小写? 它应该匹配所有正确的字符,但忽略它们是低还是大写。

G[ab].* 

假设你想要整个正则expression式忽略大小写,你应该寻找i标志 。 几乎所有的正则expression式引擎都支持它:

 /G[ab].*/i string.match("G[ab].*", "i") 

检查您的语言/平台/工具的文档以查找如何指定匹配模式。

如果你只想要部分正则expression式是不区分大小写的(假设我的原始答案),那么你有两个select:

  1. 使用(?i)和[可选] (?-i)模式修饰符:

     (?i)G[ab](?-i).* 
  2. 把正则expression式中的所有变体(如小写字母和大写)放在一起 – 如果不支持模式修饰符则很有用:

     [gG][a-bA-B].* 

最后一个注意事项:如果你正在处理ASCII以外的Unicode字符,请检查你的正则expression式引擎是否正确支持它们。

取决于实施,但我会使用

 (?i)G[ab]. 

i标志通常是区分大小写的。 这里你不会说这种语言,但可能会是/G[ab].*/i

validation'abc'的正则expression式忽略大小写

 (?i)(abc) 

为了完整起见,我想用C ++来为Unicode添加正则expression式的解决scheme:

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

正如我从这个类似的post( AWK中的ignorecase )中发现的,在旧版本的awk上(例如在Mac OS X上),可能需要使用'tolower($0) ~ /pattern/'

IGNORECASE(?i)/pattern/i将产生一个错误,或者为每一行返回true。

您也可以将您要检查模式匹配的初始string引导至小写字母。 并分别在你的模式中使用小写符号。

[gG] [aAbB]。*如果模式不太复杂或太长,可能很简单。