什么“ i”和“ i”?-i‘ in regex 是什么意思?

有人能解释一下 (?i)(?-i)用正则表达式包装单词是什么意思吗?

(?i)test(?-i)

我测试过了,匹配 test TESTteSt。但我从没见过这个。i之前的 ?是什么意思?我看过这个 给你

123406 次浏览

(?i)开启 不区分大小写模式,(?-i)关闭。

例如,如果您尝试 (?i)te(?-i)st,它将匹配 测试测试测试,但不匹配 测试

(?i)启动不区分大小写模式

(?-i)关闭不区分大小写的模式

更多信息请浏览 “仅为正则表达式的一部分打开和关闭模式”部分:

现代正则表达式风格允许您仅将修饰符应用于 如果将修饰符(? ism)插入到 对于正则表达式,修饰符只应用于正则表达式的 可以通过在模式前面添加一个 负号后的所有模式将被关闭。 (? i-sm)打开大小写不敏感性,并关闭两个单行 模式和多行模式。

并非所有的正则表达式都支持这一点,JavaScript 和 Python 都适用 整个正则表达式的模式修饰符。它们不支持 (?-ismx)语法,因为在以下情况下关闭选项是没有意义的 模式修饰符适用于整个正则表达式 默认关闭。

您可以快速测试正则表达式风格如何使用句柄模式 Regex (? i) te (?-i) st 应该匹配 TEst 和 TEst,但不匹配 测试或测试。

直接取自 Ruby Docs。

Regexp 的结束分隔符后面可以跟一个或多个 控制模式匹配方式的单字母选项。

/Pat/i-忽略案件

/Pat/m-将换行符视为匹配的字符。

/Pat/x-忽略模式中的空格和注释

/Pat/o-> 仅执行 # {}插值一次

I、 m 和 x 也可以应用于 具有(? on-off)结构的子表达式级别,该结构支持 附加的表达式的选项,并禁用该表达式的选项 括号。