我试图匹配像“23.0 32.0”的字符串。这里是我的正则表达式:正则表达式或与通配符不匹配
hrs_pnt_regex = /\s{2,}-?\d{1,2}\.\d(\s+|$)/
代码:
x = " 23.0 32.0"
x.to_enum(:scan, hrs_pnt_regex).map { Regexp.last_match }
结果:
MatchData " 23.0 " 1:" "
我注意到的是,\ S +似乎并没有在年底括号工作。如果我将它更改为“\ s \ s”,它会像这样匹配两个数字。否则,我只得到第一个。
<MatchData " 23.0 " 1:" ">, <MatchData " 32.0" 1:"">
是否+不适用于|之后呢?
为什么'这里.to_enum'?这看起来很奇怪。 – tadman
我发现,当您想要将全局正则表达式应用于字符串时,可以获取所有MatchData对象。否则,它只会返回字符串匹配,而不会返回给出字符串起始位置的对象。 –
如果你用'/ g'国旗做'match',你应该得到所有的匹配。 – tadman