如何使下面的正则表达式忽略大小写敏感性?它应该匹配所有正确的字符,但忽略它们是小写还是大写。
G[a-b].*
i标志通常用于不区分大小写。这里没有给出语言,但可能是/G[ab].*/i或/(?i)G[ab].*/之类的。
i
/G[ab].*/i
/(?i)G[ab].*/
假设你想要整个正则表达式忽略大小写,你应该寻找i国旗。几乎所有的正则表达式引擎都支持它:
/G[a-b].*/i string.match("G[a-b].*", "i")
查看您的语言/平台/工具的文档,以查找匹配模式是如何指定的。
如果你只想让正则表达式的部分不区分大小写(就像我最初的答案假设的那样),那么你有两个选择:
(?i)
(?-i)
(?i)G[a-b](?-i).*
Put all the variations (i.e. lowercase and uppercase) in the regex - useful if mode modifiers are not supported:
[gG][a-bA-B].*
One last note: if you're dealing with Unicode characters besides ASCII, check whether or not your regex engine properly supports them.
取决于实现 但我会用
(?i)G[a-b].
变化:
(?i) case-insensitive mode ON (?-i) case-insensitive mode OFF
现代正则表达式风格允许您仅对正则表达式的一部分应用修饰符。如果在正则表达式的中间插入修饰符(?im),则该修饰符仅适用于正则表达式中修饰符右侧的部分。对于这些口味,您可以通过在它们前面加上负号(?-i)来关闭模式。
描述来自页面: https://www.regular-expressions.info/modifiers.html < / p >
只是为了完整起见,我想在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/'。
'tolower($0) ~ /pattern/'
IGNORECASE或(?i)或/pattern/i将为每一行生成一个错误或返回true。
IGNORECASE
/pattern/i
正则表达式验证'abc'忽略大小写敏感
(?i)(abc)
(gG) [aAbB]。*如果图案不是太复杂或太长,可能是简单的解决方案。
除了已经被接受的答案之外:
注意,对于greping,它只是添加了-i修饰符。例如:grep -rni regular_expression来搜索这个'正则表达式' 'r',大小写'i'不敏感,在结果中显示'n'行数。
grep
-i
grep -rni regular_expression
此外,这里还有一个用于验证正则表达式的很棒的工具:https://regex101.com/
例:请看这幅图中的表达和解释。
man grep
c#
using System.Text.RegularExpressions; ... Regex.Match( input: "Check This String", pattern: "Regex Pattern", options: RegexOptions.IgnoreCase)
具体来说:选项:RegexOptions。IgnoreCase
在Java中,Regex构造函数具有
Regex
Regex(String pattern, RegexOption option)
要忽略大小写,请使用
option = RegexOption.IGNORE_CASE
你可以使用查找/替换在Visual Studio和Visual Studio Code中练习Regex。
对于带大小写的正则表达式,需要同时选择“匹配大小写”和“正则表达式”。否则[A-Z]行不通。在这里输入图像描述
JavaScript
如果你想让它不区分大小写,只需在regex的末尾添加i:
'Test'.match(/[A-Z]/gi) //返回(“T",“e",“s",“T"】
'Test'.match(/[A-Z]/gi)
没有i
'Test'.match(/[A-Z]/g) //返回(“T")
'Test'.match(/[A-Z]/g)
在JavaScript中,你应该将i标志传递给RegExp构造函数,如中数中所述:
RegExp
const regex = new RegExp('(abc)', 'i'); regex.test('ABc'); // true
芬兰湾的科特林:
"G[a-b].*".toRegex(RegexOption.IGNORE_CASE)