我看到一个正则表达式说(?i)
。那么当我们在一个字符前面加一个问号时,它意味着什么呢?
一般来说,它没有任何意义,甚至可能导致错误(如果问号后面没有有效字符)。但有些字符确实有效果,即如果该字符也用作modifier http://www.regular-expressions.info/modifiers.html.
正则表达式.info http://www.regular-expressions.info/modifiers.html关于这个特定语法的说明:
现代正则表达式风格允许您仅将修饰符应用于正则表达式的一部分。如果插入修饰符 (?ism
) 在正则表达式中间,修饰符仅适用于修饰符右侧的正则表达式部分。您可以通过在模式前面加上减号来关闭模式。减号后面的所有模式都将被关闭。例如。 (?i-sm
) 打开不区分大小写,并关闭单行模式和多行模式。
并非所有正则表达式风格都支持这一点。 JavaScript 和 Python 将所有模式修饰符应用于整个正则表达式。他们不支持(?-ismx
) 语法,因为当模式修饰符应用于整个正则表达式时,关闭选项是没有意义的。默认情况下,所有选项均处于关闭状态。
您可以快速测试您使用的正则表达式风格如何处理模式修饰符。正则表达式(?i)te(?-i)st
应该匹配test
and TEst
, 但不是teST
or TEST
.
?i
意味着这些字符后面的所有内容都应该匹配,不区分大小写。
另请注意,正如文本所述,并非所有正则表达式风格都支持此语法。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)