所以我遇到了一个问题,我的正则表达式看起来像这样:/true|false/
。
当我检查单词 falsee
时,我从这个正则表达式中得到一个 true,有没有办法将它限制为确切的 true
或 false
单词?
最佳答案
使用这个正则表达式:
/^(true|false)$/
它将分别用 ^
和 $
匹配测试字符串的开头和结尾,因此字符串中不能有任何其他内容(完全匹配)。
请参阅 Regex101 上的实例.
UPDATE(参见@w0lf 的评论):括号用于隔离 true|false
子句,以免它们被错误分组。 (这也将 true
或 false
匹配放在第一个捕获组中,但由于看起来你只是在匹配而不是捕获输出,所以这应该没有什么区别).
或者,如果您只想匹配两个值,在 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/