这是最难搜索的事情之一,因为当您搜索如何解析正则表达式时,您会得到如何使用正则表达式进行解析。我想从文件中读取正则表达式,以某种方式将其放入对象中,然后在程序中使用该正则表达式解析字符串。
我确信有人以前做过这个,你能帮我知道从哪里开始吗?
您可以使用
Regexp.new
从字符串创建正则表达式。因此,如果您的文件仅包含正则表达式,您可以执行以下操作:
regex = Regexp.new( File.read("somefile").chomp )
(
chomp
删除尾随换行符(如果有),假设您不希望在正则表达式中出现该换行符)
r = /.ol/
File.open('test.txt','w') { |f| f.print r }
r = Regexp.new IO.read 'test.txt'
puts %w{rofl lol test lol2}.grep r
Ruby 的 YAML 支持正则表达式。
是的,这是一个老歌,但我也想做类似的事情。
不确定它是什么时候引入的,但是有一个 Regexp.compile 命令可以解决您/我们的问题。
文件内容(
eg.yaml
):
---
my_regexp: ^feature\/
示例代码:
require 'yaml'
config = YAML.load_file('eg.yaml')
rgx = Regexp.compile(config['my_regexp'])
puts 'No output, as it does not match' if 'hotfix/FU-123' =~ rgx
puts 'No output, as it starts with something different' if 'new_feature/FU-123' =~ rgx
puts 'Winner winner, chicken dinner' if 'feature/BAR-123' =~ rgx
正如 Andrew Grimm 指出的那样,可以序列化 YAML 以包含提示。我个人认为这对于人类可以编辑的配置文件来说是有问题的。