gpt4 book ai didi

ruby - 无法理解为什么我在代码中禁用了 Regexp 选项

转载 作者:太空宇宙 更新时间:2023-11-03 17:36:41 25 4
gpt4 key购买 nike

我刚刚开始使用 Ruby,但遇到了一些问题。是有一些技巧可以在之后修改 Regexp 对象的 casefold 属性它已经被实例化了吗?

我尝试过的最好的想法如下:

irb(main):001:0> a = Regexp.new('a')
=> /a/
irb(main):002:0> aA = Regexp.new(a.to_s, Regexp::IGNORECASE)
=> /(?-mix:a)/i

但以下似乎都不起作用:

irb(main):003:0> a =~ 'a'
=> 0
irb(main):004:0> a =~ 'A'
=> nil
irb(main):005:0> aA =~ 'a'
=> 0
irb(main):006:0> aA =~ 'A'
=> nil

这里发生了一些我不明白的事情。 “我”在哪里上线8?

irb(main):07:0> aA = Regexp.new(a.to_s, Regexp::IGNORECASE)
=> /(?-mix:a)/i
irb(main):08:0> aA.to_s
=> "(?-mix:a)"
irb(main):09:0>

我正在使用 Ruby 1.9.3。

我也无法理解下面的代码:为什么返回false:

/(?i:a)/.casefold?      #=> false

最佳答案

如您的控制台输出所示,a.to_s 将区分大小写作为子表达式的选项,因此 aA 被定义为

/(?-mix:a)/i

所以你要求 ruby​​ 提供一个不区分大小写的正则表达式,但在那个不区分大小写的正则表达式中,唯一的东西是一个用于区分大小写的组,所以最终效果是 'a' 被匹配区分大小写

关于ruby - 无法理解为什么我在代码中禁用了 Regexp 选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14414019/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com