Ruby,真/假正则表达式

标签 ruby regex

所以我遇到了一个问题,我的正则表达式看起来像这样:/true|false/

当我检查单词 falsee 时,我从这个正则表达式中得到一个 true,有没有办法将它限制为确切的 truefalse 单词?

最佳答案

使用这个正则表达式:

/^(true|false)$/

它将分别用 ^$ 匹配测试字符串的开头和结尾,因此字符串中不能有任何其他内容(完全匹配)。

请参阅 Regex101 上的实例.

UPDATE(参见@w0lf 的评论):括号用于隔离 true|false 子句,以免它们被错误分组。 (这也将 truefalse 匹配放在第一个捕获组中,但由于看起来你只是在匹配而不是捕获输出,所以这应该没有什么区别).


或者,如果您只想匹配两个值,在 Ruby 中有更简单的方法。 @SimoneCarletti 建议一个。您还可以使用基本的 ==eql? 运算符。尝试运行以下脚本以查看所有这些是否有效:

values = ["true", "false", "almosttrue", "falsealmost"]
values.each do | value |
  puts value

  # these three are all equivalent
  puts "match with if" if value == "true" || value == "false"
  puts "match with equals?" if (value.eql? "true") || (value.eql? "false")
  puts "match with regex" if /^(true|false)$/.match value

  puts
end

关于Ruby,真/假正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38833015/

相关文章:

ruby-on-rails - 选择名称以特定字符串开头的所有 XML 元素?

php - 匹配 md5 哈希的正则表达式

java - 在Jmeter中提取数组中的json

php - MySQL 正则表达式未检测到等号

html - 如果选中复选框,如何更改索引中的字体颜色?

ruby-on-rails - 如何用 has_many 保存数据 :through

ruby - Redis BRPOP 和 ZADD 原子化

ruby - 在 Ruby 中 float n 位小数

regex - Django 管理员验证

ruby - 用于查找 'some' 并替换为 'xyz.some' 的正则表达式