加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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]来访问…

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读