如何使下面的正则表达式忽略大小写敏感性?它应该匹配所有正确的字符,但忽略它们是小写还是大写。
G[a-b].*
如何使下面的正则表达式忽略大小写敏感性?它应该匹配所有正确的字符,但忽略它们是小写还是大写。
G[a-b].*
假设你想要整个正则表达式忽略大小写,你应该寻找i标志。几乎所有的正则表达式引擎都支持它:
/G[a-b].*/i
string.match("G[a-b].*", "i")
查看您的语言/平台/工具的文档,以查找匹配模式是如何指定的。
如果你只想让部分正则表达式不区分大小写(就像我最初的答案假设的那样),那么你有两个选择:
使用(?i)和[可选](?-i)模式修饰符: (?我)G (a - b)(? -我)。* 将所有的变量(即小写和大写)放在正则表达式中-如果不支持模式修饰符,则很有用: (gG) [a-bA-B]。*
最后一点:如果您处理的是ASCII之外的Unicode字符,请检查您的正则表达式引擎是否正确地支持它们。
取决于实现 但我会用
(?i)G[a-b].
变化:
(?i) case-insensitive mode ON
(?-i) case-insensitive mode OFF
现代正则表达式风格允许您仅对正则表达式的一部分应用修饰符。如果在正则表达式的中间插入修饰符(?im),则该修饰符仅适用于正则表达式中修饰符右侧的部分。对于这些口味,您可以通过在它们前面加上负号(?-i)来关闭模式。
描述来自本页: https://www.regular-expressions.info/modifiers.html
只是为了完整起见,我想在Unicode中添加正则表达式的解决方案:
std::tr1::wregex pattern(szPattern, std::tr1::regex_constants::icase);
if (std::tr1::regex_match(szString, pattern))
{
...
}
正如我从这篇类似的文章中发现的那样(在AWK中ignorecase),在老版本的AWK上(比如在普通的Mac OS X上),你可能需要使用'tolower($0) ~ /pattern/'。
IGNORECASE或(?i)或/pattern/i将为每一行生成一个错误或返回true。
除了已经被接受的答案之外:
握把用法:
注意,对于greping,它只是添加了-i修饰符。示例:grep -rni regular_expression不规则地搜索“正则表达式”“r”,大小写“i”不敏感,在结果中显示行数“n”。
此外,这里还有一个验证正则表达式的好工具:https://regex101.com/
例:请看这幅图中的表达和解释。
引用:
手册页(Man grep) http://droptips.com/using-grep-and-ignoring-case-case-insensitive-grep
C#
using System.Text.RegularExpressions;
...
Regex.Match(
input: "Check This String",
pattern: "Regex Pattern",
options: RegexOptions.IgnoreCase)
options: RegexOptions。IgnoreCase
在Java中,正则表达式构造函数具有
Regex(String pattern, RegexOption option)
要忽略大小写,请使用
option = RegexOption.IGNORE_CASE
你可以使用查找/替换在Visual Studio和Visual Studio Code中练习Regex。
对于带大小写的正则表达式,需要同时选择“匹配大小写”和“正则表达式”。否则[A-Z]行不通。在这里输入图像描述
JavaScript
如果你想让它不区分大小写,只需在regex的末尾添加i:
“测试”.match (/ [a - z] / gi) / /返回(“T”、“e”、“s”、“T”)
没有我
'Test'.match(/[A-Z]/g) //返回["T"]
在JavaScript中,你应该像MDN中那样将i标志传递给RegExp构造函数:
const regex = new RegExp('(abc)', 'i');
regex.test('ABc'); // true