gpt4 book ai didi

ruby - 在 ruby 中存储正则表达式匹配?

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

我正在使用 ruby​​ 解析文件以更改数据格式。我创建了一个正则表达式,其中包含三个我想暂时存储在变量中的匹配组。由于一切都为零,我无法存储匹配项。

这是我到目前为止所读的内容。

regex = '^"(\bhttps?://[-\w+&@#/%?=~_|$!:,.;]*[\w+&@#/%=~_|$])","(\w+|[\w._%+-]+@[\w.-]+\.[a-zA-Z]{2,4})","(\w{1,30})'

begin
file = File.new("testfile.csv", "r")
while (line = file.gets)
puts line
match_array = line.scan(/regex/)
puts $&
end
file.close
end

这是我用于测试的一些示例数据。

"https://mail.google.com","Master","password1","","https://mail.google.com","",""
"https://login.sf.org","monster@gmail.com","password2","https://login.sf.org","","ctl00$ctl00$ctl00$body$body$wacCenterStage$standardLogin$tbxUsername","ctl00$ctl00$ctl00$body$body$wacCenterStage$standardLogin$tbxPassword"
"http://www.facebook.com","Beast","12345678","https://login.facebook.com","","email","pass"
"http://www.own3d.tv","Earth","passWOrd3","http://www.own3d.tv","","user_name","user_password"

谢谢你,
LF4

最佳答案

这行不通:

match_array = line.scan(/regex/)

这只是使用文字“regex”字符串作为您的正则表达式,而不是您的 regex 变量中的内容。您可以将丑陋的大正则表达式直接放入 scan 或创建一个 Regexp 实例:

regex = Regexp.new('^"(\bhttps?://[-\w+&@#/%?=~_|$!:,.;]*[\w+&@#/%=~_|$])","(\w+|[\w._%+-]+@[\w.-]+\.[a-zA-Z]{2,4})","(\w{1,30})')
# ...
match_array = line.scan(regex)

您可能应该使用 CSV 库(Ruby 自带:1.8.71.9)来解析 CSV 文件,然后将正则表达式应用于 CSV 中的每一列。这样你会遇到更少的引用和转义问题。

关于ruby - 在 ruby 中存储正则表达式匹配?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6394241/

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