我正在尝试匹配像“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 +最终似乎不适用于parens。如果我将其更改为“\ s \ s”,它会匹配这两个数字。否则我只得到第一个。
<MatchData " 23.0 " 1:" ">, <MatchData " 32.0" 1:"">
+不适用于|之后呢?
答案 0 :(得分:1)
问题是return false
部分消耗了后续匹配需要识别起始部分的空间。你基本上是通过吞噬所有空间并将指针留在(\s+|$)
开头的3
位置来破坏你的下一轮。只要他们被认为是第一场比赛的一部分,他们就不会在第二场比赛中出现。
快速解决方法是:
32.0
答案 1 :(得分:0)
这里最好的办法是使用在线Regex Matcher。我最喜欢的是RegExr。
我可以从您的描述中看出,您希望将数字与xx.y
匹配,在这种情况下
hrs_pnt_regex = /\d{2,}\.\d{1,2}/
将匹配两个集23.0
和32.0