关于正则表达式中的问号

时间:2011-10-28 21:56:28

标签: regex

我看到一个正则表达式(?i)。那么当我们在角色前面放一个问号时它意味着什么呢?

1 个答案:

答案 0 :(得分:12)

一般来说,它并不意味着什么,甚至可能导致错误(如果问号不遵循有效字符)。但是某些字符会产生影响,即如果此字符也用作modifier

regular-expressions.info说明了这个特殊的语法:

  

现代正则表达式风格允许您仅将修饰符应用于正则表达式的一部分。如果在正则表达式的中间插入修饰符(?ism),则修饰符仅适用于修饰符右侧的正则表达式部分。您可以通过在前面加上减号来关闭模式。减号后的所有模式都将关闭。例如。 (?i-sm)打开不区分大小写,并关闭单行模式和多行模式。

     

并非所有正则表达式都支持此功能。 JavaScript和Python将所有模式修饰符应用于整个正则表达式。它们不支持(?-ismx)语法,因为当模式修饰符应用于整个正则表达式时,关闭选项是没有意义的。默认情况下,所有选项均已关闭。

     

您可以快速测试正在使用的正则表达式处理模式修饰符的方式。正则表达式(?i)te(?-i)st应与testTEst匹配,但不能与teSTTEST匹配。

?i表示跟随这些字符的所有内容都应该不区分大小写。

另请注意,正如文中所说,并非所有正则表达式都支持此语法。