我在正则表达式中遇到了以下标记: [\s\S]*?
如果我理解正确,则字符类意味着"匹配空白字符或非空白字符".因此,这不会做到完全相同的事情.*?
一个可能的区别是通常.
与换行符不匹配.但是,这个正则表达式是用Ruby编写的,并且传递了m
修饰符,这意味着它.
实际上与新行匹配.
有没有其他理由可以[\s\S]*?
代替使用.*?
如果它有帮助,我正在查看的正则表达式出现在第97行的HEADER_PATTERN常量的sprockets库中.完整的表达式是:
/
\A \s* (
(\/\* ([\s\S]*?) \*\/) |
(\#\#\# ([\s\S]*?) \#\#\#) |
(\/\/ ([^\n]*) \n?)+ |
(\# ([^\n]*) \n?)+
)
/mx
Run Code Online (Sandbox Code Playgroud)
您正确解释了正则表达式.
这似乎是来自其他语言的遗留物,它们不支持m-flag(或其他实现中的s-flag).
使用该构造的一个原因是不使用m-flag,因此您可以使用.没有匹配换行符,但如果需要,仍然可以匹配所有内容.
归档时间: |
|
查看次数: |
279 次 |
最近记录: |