Ruby 请解释此函数中的正则表达式
请有人看一下下面的函数,并为我解释一下正则表达式,因为我不理解它,我不喜欢使用我不理解的东西,因为这样我就无法复制它以供将来使用,也无法从中学习 也可以有人解释一下双!!在前面,我知道单意味着不是,所以双是不是意味着不是 该函数是Ruby 请解释此函数中的正则表达式,ruby,regex,Ruby,Regex,请有人看一下下面的函数,并为我解释一下正则表达式,因为我不理解它,我不喜欢使用我不理解的东西,因为这样我就无法复制它以供将来使用,也无法从中学习 也可以有人解释一下双!!在前面,我知道单意味着不是,所以双是不是意味着不是 该函数是String的补丁,用于检查它是否能够转换为整数 class String def is_i? !!(self =~ /\A[-+]?[0-9]+\z/) end end 给我带来麻烦的主要事情是[-+],因为这对我来说没有什么意义
String
的补丁,用于检查它是否能够转换为整数
class String
def is_i?
!!(self =~ /\A[-+]?[0-9]+\z/)
end
end
给我带来麻烦的主要事情是[-+]
,因为这对我来说没有什么意义,如果你能在给定的上下文中解释一下,那将非常有帮助
编辑:
由于人们错过了问题的第二部分,我将更明确一点
什么是代码>意思是在支票前面,我只知道一个
的意思不是,但我找不到的内容代码>意味着
给我解释一下正则表达式,因为我不懂
模式说明:\A[-+]?[0-9]+\z
\A Start of string
[-+]? plus or minus sign [zero or one time (optional)]
[0-9]+ 0 to 9 any digit [one or more times]
\z End of string
上面的正则表达式模式能够匹配具有+
或-
符号可选的任何正整数和负整数
在[-+]
字符类上在线阅读并测试您的正则表达式模式
[-+]
是一个字符类。它表示“匹配类指定的一个字符”,即-
或+
字符类中的连字符
我可以看出这个特殊的类是如何令人困惑的,因为连字符通常在字符类中起着特殊的作用:它链接两个字符以形成一个字符范围。例如,[a-z]
表示“在a
和z
之间匹配一个字符,[a-z0-9]
表示“在a
和z
之间或0
和9
之间匹配一个字符”
但是,在这种情况下,[-+]
中的hypen位于一个不能用于指定范围的位置,-
只是一个文字连字符
解码整个表达式
- 在字符串开头断言位置
\A
- 匹配列表中的单个字符“-+”
[-+]?
- 在0到1次之间,尽可能多次,根据需要回馈(贪婪)
?
- 在“0”和“9”之间匹配单个字符
[0-9]+
- 在一次和无限次之间,尽可能多次,根据需要回馈(贪婪)
+
- 在字符串的最末端断言位置
\z
定义一组字符,其中任何一个字符都可以出现在字符串中,以便匹配成功
例如,正则表达式[-+]?[0-9]+
将匹配123
、-123
或+123
,因为它定义了一个字符类(接受-
、+
或两者都不接受)作为其第一个字符
在这方面:
\A
断言字符串开头的位置李>
[-+]
的任何字符:-
或+
(?
可选,表示在零和一时间之间)
[0-9]
的任何字符:0
到9
(+
表示1或更多次)
\z
断言字符串最末端的位置
什么是代码>平均值?
代码>放在一起将值转换为布尔值。问题“此代码如何工作”只比“此代码为什么不工作”稍微好一点。虽然问题是关于编程的,但它不太可能帮助其他用户。如果您想知道代码>的意思是,问一个问题“Ruby中的!!是什么意思”。我只是想解释一下代码,因为我不确定它的意思,我试着解决它,但是第一个字符类[-+]
和double!!
通过我,如果我不理解代码,我就不喜欢使用它。这就是它的全部,就我而言,它与问为什么它不工作完全不同,因为这是在问一个问题的解决方案;我要求解释它是如何工作的,这样我才能更好地理解和学习我也这么做了,我在谷歌上搜索了一下,但没有得到任何帮助,我得到的只是“X”个关于为什么你应该用ruby编程的理由“这或是一些不相关的结果。这就是为什么我要把这个问题作为我主要问题的额外部分;搜索带有标点符号的术语可能会令人沮丧。我觉得很有帮助。谢谢你的绿色复选标记,很高兴它有帮助!:)是的,我拿起了它,这就是为什么我把重点放在[-+]
:)