【发布时间】:2014-02-20 07:58:24
【问题描述】:
来自@sawa 的回答:https://stackoverflow.com/a/21892359/226255
!~ 是做什么的?
例子:
re = /[^\d.,]/
"0.0687987167581341,0.120311605902415,89.8399554017928,198.151088713489" !~ re
【问题讨论】:
标签: ruby
来自@sawa 的回答:https://stackoverflow.com/a/21892359/226255
!~ 是做什么的?
例子:
re = /[^\d.,]/
"0.0687987167581341,0.120311605902415,89.8399554017928,198.151088713489" !~ re
【问题讨论】:
标签: ruby
方法!~是=~的逆,即!(=~)。来自Ruby Object#!~ documentation:
[obj !~ other ] 如果两个对象不匹配(使用 =~ 方法)返回 true,否则返回 false。
所以,由于String#=~ 执行字符串/正则表达式匹配,如果匹配则返回第一个匹配项的索引,否则返回nil,String#!~ 如果匹配则返回false,否则返回true。
【讨论】:
=~ 在字符串中返回一个索引,该索引指向第一次出现的模式,Fixnum 是真值,否则返回 nil(这当然是假值)。
这意味着正则表达式确实不匹配。这是=~的倒数
这里也提到了:Does Ruby regular expression have a not match operator like "!~" in Perl?
显然由于某种原因它没有记录在案。
【讨论】: