我有一个正则表达式
'Tid [\d]+ FAILED to get HPK lock.*tid = (?<tid>[\d]+), caller|Failed to get HPK lock [\w]+, owner's PID (?<tid>[\d]+)'
它在所有者的
中抛出了一个解析错误我甚至尝试使用双引号并尝试使用在线YAML Parser ,但却出现了错误
请帮我解决这个问题。
答案 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
单独存储它们。