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

时间:2012-03-11 13:04:06

标签: regex

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

G[a-b].*

14 个答案:

答案 0 :(得分:323)

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

/G[a-b].*/i

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

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

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

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

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

    [gG][a-bA-B].*
    
  3. 最后一点:如果您处理除ASCII之外的Unicode字符,请检查您的正则表达式引擎是否正确支持它们。

答案 1 :(得分:102)

取决于实施 但我会用

(?i)G[a-b].

变化:

(?i) case-insensitive mode ON    
(?-i) case-insensitive mode OFF

现代正则表达式风格允许您仅将修饰符应用于正则表达式的一部分。如果在正则表达式的中间插入修饰符(?im),则修饰符仅适用于修饰符右侧的正则表达式部分。有了这些风格,您可以通过在前面添加减号(?-i)来关闭模式。

说明来自页面: https://www.regular-expressions.info/modifiers.html

答案 2 :(得分:45)

i标志通常用于不区分大小写。你没有在这里提供一种语言,但它可能类似于/G[a-b].*/i

答案 3 :(得分:41)

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

(?i)(abc)

答案 4 :(得分:14)

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

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

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

答案 5 :(得分:4)

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

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

答案 6 :(得分:1)

除了已经接受的答案之外:

Grep用法:

请注意,对于grep,只需添加-i修饰符即可。例如:grep -rni regular_expression以递归方式搜索此“ regular_expression”“ r”,不区分大小写,在结果中显示“ n”行。

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

Ex:请参见此图中的表达式和解释。

enter image description here

参考:

答案 7 :(得分:1)

JavaScript

如果要使其不区分大小写,只需在正则表达式的末尾添加i

'Test'.match(/[A-Z]/gi) //返回 [“ T”,“ e”,“ s”,“ t”]

没有i

'Test'.match(/[A-Z]/g) //返回 [“ T”]

答案 8 :(得分:1)

在 JavaScript 中,您应该将 i 标志传递给 RegExp 构造函数,如 MDN 中所述:

const regex = new RegExp('(abc)', 'i');

regex.test('ABc'); // true

答案 9 :(得分:0)

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

答案 10 :(得分:0)

C#

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

特别是:选项:RegexOptions.IgnoreCase

答案 11 :(得分:0)

在Java中,Regex构造函数具有

Regex(String pattern, RegexOption option)

要忽略大小写,请使用

option = RegexOption.IGNORE_CASE

答案 12 :(得分:-1)

您可以使用查找/替换在Visual Studio和Visual Studio Code中练习正则表达式。

对于带大小写的正则表达式,您需要同时选择大小写匹配和正则表达式。其他[A-Z]将不起作用。在此处输入图片描述

Visual Studio 2019 Community

答案 13 :(得分:-2)

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