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

标签 ruby regex slim-lang

在 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/

相关文章:

ruby-on-rails - Rails - Devise Gem 删除注册和忘记密码模块

python - 如何检查字符串是否包含方括号内的数字

php - PHP 中的单词出现次数 - 缩放和优化

javascript - 使用 Rails 和 Slim 的自定义 Javascript 类型

ruby - RVM,Ruby 3.0.0 在哪里?

ruby - rspec 期望通过排除指定的键来比较两个散列

ruby - MiniTest - 仅重新运行失败的测试

regex - 搜索出现在同一文件中但可能不在同一行中的文件中的两个模式

css - 添加一个 css 类以在 Rails 中选择

javascript - 在 Node.js 中使用 Slim 或 Haml & Sass/SCSS?