[\S\s]* 在 PHP 的正则表达式中是什么意思?

2022-08-30 12:13:51

在 PHP 中,正则表达式是什么意思?实际上是否匹配每个字符串是否与 ?[\s\S]*[\s\S]*.*


答案 1

默认情况下不匹配新行 - 是围绕该问题的黑客攻击。
这在JavaScript中很常见,但在PHP中,您可以使用标志使点匹配所有字符。.[\s\S]/s


答案 2

元字符与除换行符以外的任何字符匹配。因此,如果您还必须匹配换行符,则用于匹配任何内容的模式将不起作用。..*

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).


推荐