如何解决[\\\\ s \\\\ S] *有什么区别?和*?
| 我在正则表达式中遇到了以下标记:[\\s\\S]*?
如果我正确理解这一点,则字符类的意思是“匹配空白字符或非空白字符”。因此,这与do1不完全相同吗?
一种可能的区别是通常.
不匹配换行符。但是,此正则表达式是用Ruby编写的,并通过了m
修饰符,这意味着.
实际上匹配换行符。
还有其他原因要使用[\\s\\S]*?
代替.*?
如果有帮助,我正在查看的正则表达式将出现在第97行的HEADER_PATTERN常量的链轮库中。完整表达式为:
/
\\A \\s* (
(\\/\\* ([\\s\\S]*?) \\*\\/) |
(\\#\\#\\# ([\\s\\S]*?) \\#\\#\\#) |
(\\/\\/ ([^\\n]*) \\n?)+ |
(\\# ([^\\n]*) \\n?)+
)
/mx
解决方法
您正确解释了正则表达式。
这似乎是来自不支持m标志(或其他实现中的s标志)的其他语言的遗物。
使用该构造的原因是不使用m标志,因此您可以使用。无需匹配换行符,但仍可以匹配所有内容(如果需要)。
, 使用m标志,它们将是相同的,除了
.*
更清晰和易于维护。
, 换行符是唯一的区别。也许有人认为无需了解m上下文会更容易阅读,或者希望它对更改该上下文具有鲁棒性。
我看过“ 9”也有类似目的。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。