作者热门文章
- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
我正在尝试查看字符串 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/
我是一名优秀的程序员,十分优秀!