有人能解释一下 (?i)和 (?-i)用正则表达式包装单词是什么意思吗?
(?i)
(?-i)
(?i)test(?-i)
我测试过了,匹配 test TEST和 teSt。但我从没见过这个。i之前的 ?是什么意思?我看过这个 给你。
test
TEST
teSt
i
?
(?i)开启 不区分大小写模式,(?-i)关闭。
例如,如果您尝试 (?i)te(?-i)st,它将匹配 测试、 测试、 测试,但不匹配 测试。
(?i)te(?-i)st
(?i)启动不区分大小写模式
(?-i)关闭不区分大小写的模式
更多信息请浏览 “仅为正则表达式的一部分打开和关闭模式”部分:
现代正则表达式风格允许您仅将修饰符应用于 如果将修饰符(? ism)插入到 对于正则表达式,修饰符只应用于正则表达式的 可以通过在模式前面添加一个 负号后的所有模式将被关闭。 (? i-sm)打开大小写不敏感性,并关闭两个单行 模式和多行模式。 并非所有的正则表达式都支持这一点,JavaScript 和 Python 都适用 整个正则表达式的模式修饰符。它们不支持 (?-ismx)语法,因为在以下情况下关闭选项是没有意义的 模式修饰符适用于整个正则表达式 默认关闭。 您可以快速测试正则表达式风格如何使用句柄模式 Regex (? i) te (?-i) st 应该匹配 TEst 和 TEst,但不匹配 测试或测试。
现代正则表达式风格允许您仅将修饰符应用于 如果将修饰符(? 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)结构的子表达式级别,该结构支持 附加的表达式的选项,并禁用该表达式的选项 括号。
Regexp 的结束分隔符后面可以跟一个或多个 控制模式匹配方式的单字母选项。
/Pat/i-忽略案件
/Pat/m-将换行符视为匹配的字符。
/Pat/x-忽略模式中的空格和注释
/Pat/o-> 仅执行 # {}插值一次
I、 m 和 x 也可以应用于 具有(? on-off)结构的子表达式级别,该结构支持 附加的表达式的选项,并禁用该表达式的选项 括号。