Ruby匹配并打印数据中的多个字符串
我在web上的某个位置有一个hashes.xml。我想对字段Ruby匹配并打印数据中的多个字符串,ruby,Ruby,我在web上的某个位置有一个hashes.xml。我想对字段name='hash'>78235A2449BA7188CBF95F7DD2D40A36进行解析,该文件有许多具有这种模式的字段(MD5哈希只是一个示例,它们在XML文档中有所不同),我想将它们全部获取并打印到标准输出。就我所能做的来说,就是把第一次出现的东西拿出来打印出来,然后我就卡住了 for locale in (locales) while hash.nil? do headers = { 'Host'
name='hash'>78235A2449BA7188CBF95F7DD2D40A36
进行解析,该文件有许多具有这种模式的字段(MD5哈希只是一个示例,它们在XML文档中有所不同),我想将它们全部获取并打印到标准输出。就我所能做的来说,就是把第一次出现的东西拿出来打印出来,然后我就卡住了
for locale in (locales)
while hash.nil? do
headers = {
'Host' => server,
'Content-Type' => 'application/x-www-form-urlencoded',
'Content-Length' => locale.length.to_s,
}
resp, data = http.post(path, locale, headers)
# Extract the hash
data =~ /name='hash'\>\<string\>([A-F0-9]+).*\<\/string\>/m
hash = $1
mylocale = locale
break if hash.nil?
end
end
if hash.nil?
puts "ERROR"
exit(1)
end
puts "Hash: "+hash
中的区域设置(区域设置)
而hash.nil?做
标题={
“主机”=>服务器,
“内容类型”=>“应用程序/x-www-form-urlencoded”,
“内容长度”=>locale.Length.to_,
}
resp,data=http.post(路径、区域设置、标题)
#提取散列
数据=~/name='hash'\>\([A-F0-9]+).\/m
散列=$1
mylocale=locale
如果hash.nil中断?
结束
结束
如果hash.nil?
“错误”
出口(1)
结束
放置“散列”:+散列
您正在寻找扫描方法:
a =<<END
this is some example name='hash'><string>AAAAAA224</string>
name='hash'><string>AAAAAA224</string>
vname='hash'><string>AAAAAA224</string>
example for you name='hash'><string>666</string>
END
m = a.scan(/name='hash'><string>[A-F0-9]+.*<\/string>/)
puts m.inspect
a=aaaaaa 224
vname='hash'>aaaaaa 224
您的姓名class='hash'>666的示例
结束
m=a.scan(/name='hash'>[a-F0-9]+.*/)
把m
结果是:
["name='hash'><string>AAAAAA224</string>", "name='hash'><string>AAAAAA224</string>", "name='hash'><string>AAAAAA224</string>", "name='hash'><string>666</string>"]
[“name='hash'>aaaaa 224”,“name='hash'>aaaaa 224”,“name='hash'>aaaaa 224”,“name='hash'>666”]
你也可以看到帖子。看看String#scan方法。是的,谢谢izomorphius,这很有效:)只是“m=a.scan(/name='hash'>[a-F0-9]+.*/)”而不是“$m=a.scan(/name='hash'>[a-F0-9]+./”,事实上,我使用$m能够在irb中加载脚本并查看$m的竞赛。对于这个例子,仅仅m就足够了。我将编辑我的帖子。非常感谢您的帮助:)