gpt4 book ai didi

ruby-on-rails - 使用正则表达式从文件中提取环境变量

转载 作者:数据小太阳 更新时间:2023-10-29 07:58:54 24 4
gpt4 key购买 nike

# code

ENV['VAR_1'] = 'HELLO 1'
ENV['VAR_2'] = 'HELLO 2'
ENV['VAR_3'] = 'HELLO 3'

# code

如何使用 ruby​​ 和正则表达式提取每个变量及其值?

目前我正在逐行进行,这很愚蠢。

S3_SECRET       = line.split(' = ').last.delete("'") if line =~ /ENV\['S3_SECRET'\]/
S3_KEY = line.split(' = ').last.delete("'") if line =~ /ENV\['S3_KEY'\]/
S3_BUCKET = line.split(' = ').last.delete("'") if line =~ /ENV\['S3_BUCKET'\]/

最佳答案

你可能有一个非常冗长的正则表达式,比如

/^ENV\['(.*?)'\] *= *'(.*?)'$/

参见 regex demo .

详细信息:

  • ^ - 行首
  • ENV\[' - 文字 ENV[' 子串
  • (.*?) - 第 1 组捕获除换行符以外的 0+ 个字符,直到第一个字符为止
  • '\] - 文字 '] 文本
  • *= * - = 符号包含在可选的(0 个或更多)空格中
  • ' - 单引号
  • (.*?) - 第 2 组捕获除换行符以外的 0+ 个字符,直到
  • ' - 最终 ' 在...
  • $ - 行尾。

这是一个Ruby demo :

s = <<DATA
# code

ENV['VAR_1'] = 'HELLO 1'
ENV['VAR_2'] = 'HELLO 2'
ENV['VAR_3'] = 'HELLO 3'

# code
DATA
puts s.scan(/^ENV\['(.*?)'\] *= *'(.*?)'$/).to_h

输出:{"VAR_1"=>"HELLO 1", "VAR_2"=>"HELLO 2", "VAR_3"=>"HELLO 3"

关于ruby-on-rails - 使用正则表达式从文件中提取环境变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38707389/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com