有人能解释一下在正则表达式中使用 (?i)
和 (?-i)
包裹单词的含义吗?
(?i)test(?-i)
我测试了一下,它匹配了
test
、TEST
和teSt
。但我以前从未见过这个。在i
之前的?
是什么意思?我在这里看到的。(?i)
开启不区分大小写模式
(?-i)
关闭不区分大小写模式
更多信息请参见"在正则表达式的部分内容中开启和关闭模式"本页的章节:
现代正则表达式支持对正则表达式的部分应用修饰符。如果在正则表达式的中间插入修饰符(?ism),则该修饰符仅适用于修饰符右侧的正则表达式的部分。您可以通过在修饰符前面加上减号来关闭模式。减号后面的所有模式都将被关闭。例如,(?i-sm)打开不区分大小写模式,并关闭单行模式和多行模式。(?i)
开启 不区分大小写 模式,(?-i)
关闭该模式。
例如,如果您尝试使用 (?i)te(?-i)st
,它将匹配 test、TEst、tEst,但不会匹配 teST。
直接从 Ruby 文档中提取。
正则表达式的结束定界符可以后跟一个或多个单字母选项,用于控制模式匹配方式。
/pat/i - 忽略大小写
/pat/m - 认为换行符是 . 匹配的字符
/pat/x - 忽略模式中的空格和注释
/pat/o - 只执行一次 #{} 插值
i、m 和 x 也可以通过 (?on-off) 结构应用于子表达式级别,在括号内对所包含的表达式启用 on 选项并禁用 off 选项。
/i
符号,但我习惯于使用(?i)
符号。 - fIwJlxSzApHEZIl
(?i)
。 - Robo Robok