【问题标题】:What does the !~ method do with String in Ruby!~ 方法对 Ruby 中的 String 有什么作用
【发布时间】:2014-02-20 07:58:24
【问题描述】:

来自@sawa 的回答:https://stackoverflow.com/a/21892359/226255

!~ 是做什么的?

例子:

re = /[^\d.,]/
"0.0687987167581341,0.120311605902415,89.8399554017928,198.151088713489" !~ re

我在StringRegexp 中找不到任何文档

【问题讨论】:

    标签: ruby


    【解决方案1】:

    方法!~=~的逆,即!(=~)。来自Ruby Object#!~ documentation

    [obj !~ other ] 如果两个对象不匹配(使用 =~ 方法)返回 true,否则返回 false。

    所以,由于String#=~ 执行字符串/正则表达式匹配,如果匹配则返回第一个匹配项的索引,否则返回nilString#!~ 如果匹配则返回false,否则返回true

    【讨论】:

    • 从技术上讲,=~ 在字符串中返回一个索引,该索引指向第一次出现的模式,Fixnum 是真值,否则返回 nil(这当然是假值)。
    • @olleicua:好的,感谢 olleicua 的撬动 :D Abdo:最近 Ruby 文档变得更好了,你可以在那里找到几乎所有的东西;相反,1.8.7 更加晦涩...
    【解决方案2】:

    这意味着正则表达式确实匹配。这是=~的倒数

    这里也提到了:Does Ruby regular expression have a not match operator like "!~" in Perl?

    显然由于某种原因它没有记录在案。

    【讨论】:

    • 这不明显,你只是没找对地方。
    • @theTinMan - 所以值得否决正确答案?如果您确实查看了我包含的链接,您会看到其他人做出了合理的假设,即此类函数将记录在字符串或正则表达式中。
    猜你喜欢
    • 2018-07-09
    • 1970-01-01
    • 2011-05-03
    • 2015-01-15
    • 2015-02-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多