我試圖匹配像「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