gpt4 book ai didi

ruby - 正则表达式中的奇怪事情

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

我在rubular.com实习的时候,我一直在尝试匹配一个正则表达式,该正则表达式检查单词是否以非辅音开头。我的方法是检查大小写如何以非字母开头,或以数字或下划线开头,或检查空字符串我发现了一个奇怪的行为:

我的正则表达式 /^[aeiou_0-9\W]|^$/i 匹配 ks 辅音!。我不明白为什么。

有什么想法吗?

示例链接 -> http://rubular.com/r/0zt0VPmcwr

最佳答案

这很有趣,因为您在使用\W 和/i 时偶然发现了一个专门针对字母 k 和 s 的错误(就像一场完美 Storm )。

这是解释错误的链接:https://bugs.ruby-lang.org/issues/4044

也许这是在更高版本的 ruby​​ 中修补的,但是如果您不想经历转到新版本的 ruby​​ 的麻烦,那么您可以明确地创建所有辅音的倒置字符类:

/^[^bcdfghjklmnpqrstvwxyz]|^$/i

这是rubular链接:http://rubular.com/r/URgsWP3suQ

编辑:因此,关于您的正则表达式,我注意到的另一件事是您的正则表达式(以及我上面提供的正则表达式)仅匹配单词的第一个字母,而我提供的正则表达式匹配整个单词。我不知道这是否对您有影响,但我觉得值得指出。请查看上面和下面的 rubular 链接中突出显示的区别(查看上面的链接如何仅突出显示单词的第一个字母,而下面的链接突出显示整个单词):

^[^bcdfghjklmnpqrstvwxyz].*|^$

http://rubular.com/r/IVJ03uOK4h

关于ruby - 正则表达式中的奇怪事情,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37960396/

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