2023-08-23 07:00:04

Regex:忽略大小写

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

G[a-b].*

当前回答

取决于实现 但我会用

(?i)G[a-b].

变化:

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

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

描述来自本页: https://www.regular-expressions.info/modifiers.html

其他回答

正如我从这篇类似的文章中发现的那样(在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

您还可以将您要检查模式匹配的初始字符串引导为小写。在你的图案中分别使用小写符号。

科特林:

"G[a-b].*".toRegex(RegexOption.IGNORE_CASE)

在JavaScript中,你应该像MDN中那样将i标志传递给RegExp构造函数:

const regex = new RegExp('(abc)', 'i');

regex.test('ABc'); // true