regexp = /(?:status\\\":)(\d*)(?:\,)/
string = '\n{\"status\":80,\"message\":\"Test message\"}\n'
result = string.scan(regexp)[0]
puts result
为什么这样做,但如果我这样做
regexp = /(?:status\\\":)(\d*)(?:\,)/
string = "\n{\"status\":80,\"message\":\"Test message\"}\n"
result = string.scan(regexp)[0]
puts result
我没有结果?我正在搜索的字符串是从Mechanize正文结果中复制的。我正在尝试对机械化页面对象的直接结果使用相同的正则表达式,并且没有显示匹配,我假设出于同样的原因发生了这个问题。
答案 0 :(得分:2)
这里的问题是'\n'
和"\n"
不是一回事:
'\n'
#=> "\\n" literal-backslash n
"\n"
# => "\n" newline character
如果需要反斜杠代码,则需要双引号字符串。
如果您的字符串中使用了这两种类型并且您不想逃避它们,请不要忘记%q[...]
和%Q[...]
之类的内容作为使用引号的替代方法。
答案 1 :(得分:1)
您想要使用JSON:
JSON.parse(string)['status']
#=> 80