[\S\s]* 在 PHP 的正则表达式中是什么意思?
在 PHP 中,正则表达式是什么意思?实际上是否匹配每个字符串是否与 ?[\s\S]*
[\s\S]*
.*
在 PHP 中,正则表达式是什么意思?实际上是否匹配每个字符串是否与 ?[\s\S]*
[\s\S]*
.*
默认情况下不匹配新行 - 是围绕该问题的黑客攻击。
这在JavaScript中很常见,但在PHP中,您可以使用标志使点匹配所有字符。.
[\s\S]
/s
元字符与除换行符以外的任何字符匹配。因此,如果您还必须匹配换行符,则用于匹配任何内容的模式将不起作用。.
.*
preg_match('/^.*$/',"hello\nworld"); // returns 0
[\s\S]
这是空白字符的字符类,非空格字符匹配任何字符,包括换行符,因此 , .所以你的模式现在匹配任何东西。[\d\D]
[\w\W]
[\s\S]*
preg_match('/^[\s\S]$/s',"hello\nworld"); // returns 1
使任何内容(包括换行符)匹配的替代方法是使用修饰符。.
s
preg_match('/^.*$/s',"hello\nworld"); // returns 1
使用修饰符的替代方法是将其内联为:s
preg_match('/^(?s).*(?-s)$/',"hello\nworld"); // returns 1
(?s)
打开模式,如果关闭,则关闭。关闭后,任何关注都将不匹配换行符。s
(?-s)
.