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



我有一个正则表达式

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

在所有者的

上抛出解析错误

我甚至尝试了双引号,并在Online YAML Parser中尝试过,但它抛出了一个错误

请帮我解决这个问题

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

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不保留regexp的选项。您可能必须通过Regexp#options单独存储它们。

最新更新