方形支架中的空间与空间有不同的含义吗?

Ema*_*sev 9 php regex

举个例子,确实/[ ]{0,3}/有不同的含义/ {0,3}/吗?

Sep*_*ter 13

如果允许在正则表达式中的令牌之间允许"自由空间" 的修饰符标志(为了可读性并允许正则表达式注释),它可以具有不同的含义x.但是如果未启用此设置,则两者之间没有功能差异.

有关此选项的详细说明,请参阅此Regex教程,其中指出:

...自由间距模式在字符类中没有任何影响.字符类中的空格和换行符将包含在字符类中.

此外,对于PHP特定权限,请参阅PCRE模式修饰符的PHP手册,其中指出:

x(PCRE_EXTENDED)如果设置了此修饰符,则模式中的空白数据字符将被完全忽略,除非转义或在字符类中...

请参阅其他Regex教程页面,了解如何指定修饰符,解释如何在不同版本的正则表达式中实现修饰符.

修饰符标志可以包含在正则表达式本身中,因为(?x)意味着从正则表达式中的那个点到正则表达式的结尾(或直到结束(?-x))启用自由空间.特别是对于PHP,修饰符标志可以通过尾随正则表达式应用于整个表达式,例如(使用您的一个示例)/ {0,3}/x

方括号格式([ ])显式表示文字空间,无论该设置如何,IMO都是自我记录的; 它非常明确地显示了devoloper使用文字空间的意图,可能优先于" \s"字符类(也包括制表符和新行).

此外,再次只是IMO,这是一种"逃避"空间作为文字的优选方式,而不是使用\ 容易被未来代码维护者误解或忽略的" ".