gpt4 book ai didi

ruby - 被一个简单的正则表达式难住了

转载 作者:数据小太阳 更新时间:2023-10-29 06:58:34 24 4
gpt4 key购买 nike

我正在尝试查看字符串 s 是否包含正则表达式中的任何符号。下面的正则表达式在 rubular 上运行良好.

s = "asd#d"
s =~ /[~!@#$%^&*()]+/

但是在 Ruby 1.9.2 中,它给出了这个错误信息:

syntax error, unexpected ']', expecting tCOLON2 or '[' or '.'
s = "asd#d"; s =~ /[~!@#$%^&*()]/

怎么了?

最佳答案

这实际上是使用大多数人似乎不知道的全局变量和实例变量进行字符串插值的特例。由于字符串插值也发生在 Ruby 的正则表达式中,我将在下面用字符串进行说明(因为它们提供了一个更简单的示例):

@foo = "instancefoo"
$foo = "globalfoo"
"#@foo" # => "instancefoo"
"#$foo" # => "globalfoo"

因此您需要对 # 进行转义以防止它被插入:

/[~!@\#$%^&*()]+/

据我所知,在 Ruby 中创建非内插正则表达式的唯一方法是使用字符串(注意 引号):

Regexp.new('[~!@#$%^&*()]+')

关于ruby - 被一个简单的正则表达式难住了,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9493100/

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