我想看看字符串是否s
包含正则表达式中的任何符号。下面的正则表达式可以正常工作rubular http://rubular.com/.
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 中创建非插值正则表达式的唯一方法是使用字符串(注意single引号):
Regexp.new('[~!@#$%^&*()]+')
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)