Ruby:如何从文件中读取正则表达式,然后使用该正则表达式解析字符串?

问题描述 投票:0回答:4

这是最难搜索的事情之一,因为当您搜索如何解析正则表达式时,您会得到如何使用正则表达式进行解析。我想从文件中读取正则表达式,以某种方式将其放入对象中,然后在程序中使用该正则表达式解析字符串。

我确信有人以前做过这个,你能帮我知道从哪里开始吗?

ruby regex file
4个回答
3
投票

您可以使用

Regexp.new
从字符串创建正则表达式。因此,如果您的文件仅包含正则表达式,您可以执行以下操作:

regex = Regexp.new( File.read("somefile").chomp )

chomp
删除尾随换行符(如果有),假设您不希望在正则表达式中出现该换行符)


2
投票
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

0
投票

Ruby 的 YAML 支持正则表达式


0
投票

是的,这是一个老歌,但我也想做类似的事情。

不确定它是什么时候引入的,但是有一个 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 以包含提示。我个人认为这对于人类可以编辑的配置文件来说是有问题的。

© www.soinside.com 2019 - 2024. All rights reserved.