ruby – 如何迭代正则表达式的匹配组
发布时间:2020-12-17 02:39:21 所属栏目:百科 来源:网络整理
导读:我有以下情况不符合我的预期,而且,我做错了什么,但我找不到那是什么.该脚本匹配句子中的四个字母单词.我想找到一种迭代匹配组的方法. x = "This is a statement with four letter words like this"result = x.match /(bw{4}b)/= #MatchData "This" 1:"Thi
我有以下情况不符合我的预期,而且,我做错了什么,但我找不到那是什么.该脚本匹配句子中的四个字母单词.我想找到一种迭代匹配组的方法.
x = "This is a statement with four letter words like this" result = x.match /(bw{4}b)/ => #<MatchData "This" 1:"This"> 不幸的是,$1包含“This”,但这就是我得到的. $2应该包含“with”但它是零.我究竟做错了什么?为什么2美元零?为什么$n的n> = = 2? 解决方法
这是因为您的正则表达式只匹配一次并且只包含一个捕获组.
你可能想要: x.scan /bw{4}b/ 这将为您提供所有比赛的数组. $1,$2 …在正则表达式的单个匹配中设置为组,例如 x.match(/(bw{4}b).*(bw{4}b)/) 将$1设置为’This’,将$2设置为’this’. 这些组也可以通过$?[1],$?[2],…或Regexp.last_match [1]来访问… (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |