Ruby Regex语句中的\ S和[^ \ s]之间有什么区别吗?

时间:2014-01-16 09:21:49

标签: ruby regex slim-lang

在Slim解析器的代码中,有以下正则表达式语句:

/\A(?:#{keys}|\*(?=[^\s]+)|(#{WORD_RE}(?:#{WORD_RE}|:|-)*#{WORD_RE}|#{WORD_RE}+))/

可以\S代替[^\s]吗?

该陈述会有不同的表现吗?

2 个答案:

答案 0 :(得分:3)

稍微长一点的解释:\S是元字符,被解释为/[^ \t\r\n\f]/,而\s是元字符,被解释为/[ \t\r\n\f]/ - > Documentation

因此对字符的解释完全相反,这意味着如果你反转其中一个,你将获得完全相同的匹配行为。

这意味着是的,您可以使用[^\s]替换正则表达式中的\S

答案 1 :(得分:1)

\S只是被\s否定,所以与[^\s]相同,没有区别。