G[a-b].*
#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]无法使用。请在此处输入图片说明
评论
在进行正则表达式匹配之前,只需将大写和小写都包含在正则表达式中或转换为大写即可。在这种一般情况下,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”行。