正则expression式:忽略大小写
我如何使下面的正则expression式忽略区分大小写? 它应该匹配所有正确的字符,但忽略它们是低还是大写。
G[ab].*
假设你想要整个正则expression式忽略大小写,你应该寻找i
标志 。 几乎所有的正则expression式引擎都支持它:
/G[ab].*/i string.match("G[ab].*", "i")
检查您的语言/平台/工具的文档以查找如何指定匹配模式。
如果你只想要部分正则expression式是不区分大小写的(假设我的原始答案),那么你有两个select:
-
使用
(?i)
和[可选](?-i)
模式修饰符:(?i)G[ab](?-i).*
-
把正则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]。*如果模式不太复杂或太长,可能很简单。