gpt4 book ai didi

ruby - 需要所有正则表达式匹配,而不仅仅是第一个

转载 作者:太空宇宙 更新时间:2023-11-03 17:33:41 25 4
gpt4 key购买 nike

这是我的字符串...

[foo-1 param1 : value1, param2 : value2]
[foo-2 param1 : value1, param2 : value2, params3 : value3]
...

我的目的是先获取[]之间的所有序列,然后解析所有参数。我为此写了 2 个正则表达式,第一个应该得到 [] 之间的所有序列:

/\[([\w-]+)\s?([\w@.,:\s]*)\]/m

第二个正则表达式应该解析我所有的参数

/([\w]+)\s?,?:\s?,?([\w@.-]+)/m

我的问题是我总是获得第一场比赛,但我想获得所有比赛。我试着这样做:

r = /\[([\w-]+)\s?([\w@.,:\s]*)\]/m
str = "[foo-1 param1 : value1, param2 : value2]
[foo-2 param1 : value1, param2 : value2, params3 : value3]"

m = r.match(str)

# #<MatchData "[foo-1 param1 : value1, param2 : value2]" 1:"foo-1" 2:"param1 : value1, param2 : value2">

任何人都可以帮助我并解释为什么我的正则表达式只得到第一场比赛,即使应该有更多的比赛?我在 rubular 上测试了它(此处:http://www.rubular.com/r/nTVE6M5om5),它似乎有效。

最佳答案

那是因为您正在使用 Regexp#match。那只匹配一次。如果您想要多个匹配项,请使用 String#scan

关于ruby - 需要所有正则表达式匹配,而不仅仅是第一个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24752670/

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