如果你有一个实际的正则表达式:(简称为简洁起见)
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
单独存储它们。
_“我有一个正则表达式”_ - 不,不是真的。 '/.../'创建一个正则表达式,而''...''创建一个字符串。 – Stefan
您是否试图在解析文件后将其转换为正则表达式的YAML文件中存储字符串? – Stefan
是的确切 - 我正在yaml文件中存储字符串解析与正则表达式的红宝石 – sireesha