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

G[a-b].*


评论

在进行正则表达式匹配之前,只需将大写和小写都包含在正则表达式中或转换为大写即可。

在这种一般情况下,G [a-bA-B]。*很明显,区分大小写取决于afaik平台,而您没有提供平台。

如果您使用的是Java,则可以使用Pattern类进行指定:Pattern pattern = Pattern.compile(regex,Pattern.CASE_INSENSITIVE);.

此处提供更多Java选项:blogs.oracle.com/xuemingshen/entry/…

请注意,为进行润滑,只需添加-i修饰符即可。例如:grep -rni Regular_expression递归搜索此“ regular_expression”“ r”,区分大小写“ i”,结果中显示“ n”行。

#1 楼

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

/G[a-b].*/i

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


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

如果您只希望正则表达式的一部分不区分大小写(如我的原始答案一样),则有两个选择:



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

(?i)G[a-b](?-i).*



将所有变体(即小写和大写)放入正则表达式中-如果不支持模式修饰符,则非常有用:

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



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

评论


辉煌!适用于:perl -pe's / ^ utf-8 \?B \?。* $ // gi'Cancer.1631,匹配/替换字符串“ UTF-8?B?”在文件Cancer.1631中。这将失败:由于大小写不匹配,perl -pe's / ^ utf-8 \?B \?。* $ // g'Cancer.1631。

–维多利亚·斯图尔特(Victoria Stuart)
18年1月18日在1:26



如果不是这样的具体例子,这篇文章会更加清晰。就像您要忽略另一个单词(例如“ .txt”和“ .TXT”)的大小写一样。通过查看此答案,我仍然不确定如何做到这一点。

–凯尔·布莱恩汀(Kyle Bridenstine)
18年6月12日在23:14

由于某种原因,您发布的正则表达式在查找扩展正则表达式中不起作用。例如find。 \(-type d -regextype posix-extended -regex'/./[a-c][^.]*/i'\)没有显示任何文件夹。 \(-type d -regextype posix-extended -regex'./[a-c][^.]*'\)确实显示了正确的文件夹。知道为什么吗?

–alpha_989
18年7月1日在21:19

在这里,我试图在当前文件夹中查找所有以字符[a-c]开头的文件夹..以进行更多操作。

–alpha_989
18年7月1日在21:20

老实说,我将选项2放在答案的主要部分,因为它是通用的,并且可以与所有正则表达式引擎一起使用。

– Puterdo Borato
19年11月21日在14:53

#2 楼

取决于实现方式
,但我会使用

(?i)G[a-b].


版本:

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


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

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

评论


这是TortoiseHg的搜索正则表达式引擎的修饰符格式。

–mwolfe02
15年3月12日在14:08

您能告诉我如何在Linux shell中实现该功能吗(例如在egrep中不使用“ -i”开关)?

–克里希纳·古普塔(Krishna Gupta)
2015年9月5日下午0:58

解释(?i)的功能以及如何结束((?-i))确实很有帮助。这就是不言而喻的原因,因为您的答案解释了这个微妙的细节,而答案却是排名第一的问题的1/3票,而不是几乎第一条问题的票。

–加百利·斯台普斯
18-10-17在22:13



#3 楼

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

(?i)(abc)


评论


与Android Studio logcat完美搭配

–乔
17年8月25日在14:23

也可以在python中工作

–conner.xyz
19年1月4日,下午3:43

#4 楼

i标志通常用于区分大小写。您在这里没有提供语言,但可能会像/G[ab].*/i/(?i)G[ab].*/一样。

#5 楼

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

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

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


评论


有人可以向我澄清为什么这篇文章被否决吗?接受的解决方案使用特定的代码,为了完整起见,我想为c ++语言的标准库添加解决方案。我认为,我为一个更普遍的问题创造了附加价值。

–科学怪人
13年8月7日在6:24

#6 楼

正如我从类似的文章(AWK中的ignorecase)中发现的那样,在awk的旧版本(例如在香草Mac OS X上)上,可能需要使用'tolower(IGNORECASE) ~ /pattern/'

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

#7 楼

C#

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


专门:选项:RegexOptions.IgnoreCase

#8 楼

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

评论


想知道为什么这个答案对于给定的问题是错误的吗?

–alpha_989
17年12月24日在16:17

您的答案“不太复杂或太长”

– Reggaeguitar
19年4月10日在16:20

实际上,这是唯一适用于我的案例的解决方案。而且,它似乎是应该在任何地方都可以使用的最通用的解决方案。所有其他答案似乎都是针对特定的正则表达式实现的。

– Puterdo Borato
19年11月21日在14:51

#9 楼

除了已经接受的答案:

Grep用法:

请注意,对于grep ing,只是添加了-i修饰符。例如:grep -rni regular_expression以递归方式搜索此'regular_expression''r',区分大小写'i',并在结果中显示行号'n'。

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

示例:请参见此图中的表达式和说明。



参考文献:


手册页(man grep
http://droptips.com/using-grep-and-ignoring-case-case-insensitive-grep


#10 楼

JavaScript
如果要使其不区分大小写,只需在正则表达式的末尾添加i
'Test'.match(/[A-Z]/gi) //返回[“ T”,“ e”,“ s”,“ t”]
没有i
'Test'.match(/[A-Z]/g) //返回[“ T”]

#11 楼

在Java中,Regex构造函数具有

Regex(String pattern, RegexOption option)


所以要忽略大小写,请使用

option = RegexOption.IGNORE_CASE


#12 楼

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

您需要为大小写正则表达式选择“匹配大小写”和“正则表达式”。其他[A-Z]无法使用。请在此处输入图片说明



#13 楼

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