2023-08-23 07:00:04

Regex:忽略大小写

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

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

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

在Java中,正则表达式构造函数具有

Regex(String pattern, RegexOption option)

要忽略大小写,请使用

option = RegexOption.IGNORE_CASE

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

i标志通常用于区分大小写。这里没有给出具体的语言,但可能是/G[ab]之类的。*/i or /(?i)G[ab].*/。