如果你有一個實際的正則表達式:(簡稱爲簡潔起見)
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