如何在yaml文件中转义单引号(onwer' s)

时间:2016-09-20 12:37:36

标签: ruby yaml

我有一个正则表达式

   'Tid [\d]+ FAILED to get HPK lock.*tid = (?<tid>[\d]+), caller|Failed to get HPK lock [\w]+, owner's PID (?<tid>[\d]+)'

它在所有者的

中抛出了一个解析错误

我甚至尝试使用双引号并尝试使用在线YAML Parser ,但却出现了错误

请帮我解决这个问题。

1 个答案:

答案 0 :(得分:0)

如果你有一个实际的正则表达式:(为简洁而缩短)

re = /owner's PID (?<tid>[\d]+)/
#=> /owner's PID (?<tid>[\d]+)/

您可以通过source获取其字符串表示形式:

re.source
#=> "owner's PID (?<tid>[\\d]+)"

这可以在YAML中使用:

require 'yaml'
yaml = { 'pattern' => re.source }.to_yaml
#=> "---\npattern: owner's PID (?<tid>[\\d]+)\n"

puts yaml

输出:

---
pattern: owner's PID (?<tid>[\d]+)

解析它:

hash = YAML.load(yaml)
#=> {"pattern"=>"owner's PID (?<tid>[\\d]+)"}

可以通过以下方式创建正则表达式:

Regexp.new(hash['pattern'])
#=> /owner's PID (?<tid>[\d]+)/

请注意,Regexp#source不会保留正则表达式options。您可能需要通过Regexp#options单独存储它们。