在 Slim 解析器的代码中,有以下正则表达式语句:
/\A(?:#{keys}|\*(?=[^\s]+)|(#{WORD_RE}(?:#{WORD_RE}|:|-)*#{WORD_RE}|#{WORD_RE}+))/
可以用\S
代替[^\s]
吗?
该语句的行为会有什么不同吗?
最佳答案
作为一个稍微长一点的解释:\S
是一个元字符,被解释为 /[^\t\r\n\f]/
,而 \s
是一个元字符,被解释为 /[\t\r\n\f]/
-> Documentation
因此,字符的解释完全相反,这意味着如果您反转两者之一,您将获得完全相同的匹配行为。
这意味着可以,您可以将正则表达式中的 [^\s]
替换为 \S
。
关于ruby - Ruby Regex 语句中的\S 和 [^\s] 有什么区别吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21157763/