如何使以下正则表达式忽略区分大小写?它应匹配所有正确的字符,但忽略它们是低级还是大写。
G[a-b].*
答案 0 :(得分:323)
假设您希望整个正则表达式忽略大小写,则应该查找i
flag。几乎所有正则表达式引擎都支持它:
/G[a-b].*/i
string.match("G[a-b].*", "i")
查看您的语言/平台/工具的文档,了解如何指定匹配模式。
如果你只想要正则表达式的部分不区分大小写(假设我的原始答案),那么你有两个选择:
使用(?i)
和[可选] (?-i)
模式修饰符:
(?i)G[a-b](?-i).*
将所有变体(即小写和大写)放在正则表达式中 - 如果不支持模式修饰符,则非常有用:
[gG][a-bA-B].*
最后一点:如果您处理除ASCII之外的Unicode字符,请检查您的正则表达式引擎是否正确支持它们。
答案 1 :(得分:102)
取决于实施 但我会用
(?i)G[a-b].
变化:
(?i) case-insensitive mode ON
(?-i) case-insensitive mode OFF
现代正则表达式风格允许您仅将修饰符应用于正则表达式的一部分。如果在正则表达式的中间插入修饰符(?im),则修饰符仅适用于修饰符右侧的正则表达式部分。有了这些风格,您可以通过在前面添加减号(?-i)来关闭模式。
答案 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
,只需添加-i
修饰符即可。例如:grep -rni regular_expression
以递归方式搜索此“ regular_expression”“ r”,不区分大小写,在结果中显示“ n”行。
此外,这是一个验证正则表达式的好工具:https://regex101.com/
Ex:请参见此图中的表达式和解释。
答案 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]将不起作用。在此处输入图片描述
答案 13 :(得分:-2)
您还可以将您要检查模式匹配的初始字符串引导到小写字母。并分别在你的模式中使用小写符号。