【发布时间】:2018-03-12 04:25:18
【问题描述】:
我试图用正则表达式解析网页的一个子集,只是为了好玩。在我遇到以下问题之前,这很有趣。我有如下一段;
foo: 1, 2, 3, 4 and 5.
bar: 1, 2 and 3.
我想要做的是,通过应用以下正则表达式来获取以foo: 开头的段落第一行中的数字:
foo:(?:\s(\d)(?:,|\sand|\.))+
这与上面的字符串匹配,但它只捕获捕获组的最后一次出现,即5。
如何使用单个正则表达式模式捕获以foo: 开头的段落中的所有数字,直到第一次出现.。
【问题讨论】:
-
如果没有
\Grubular.com/r/VKOaLEYmSI 的帮助,您将无法使用Ruby -
是的,但不需要使用
\K,s.scan(/(?:foo:\s*|(?!\A)\G\s*(?:,|and)?\s*)(\d+)/)就可以了。但是s[/foo:([^.]+)/,1].scan(/\d+/)看起来更漂亮。 -
虽然它不影响 Rubular 显示结果的方式,但
\K用于纯粹的数字表示。 -
\G成功了,谢谢,但您能否将其作为答案发布,并附上\G的解释以及\K的解释?我已经进行了搜索并找到了它的作用,但解释性答案可能会帮助正在寻找类似问题答案的人。 -
谁是“您的解决方案”的所有者?请以您要发表评论的人的用户名开始您的 cmets,并以“@”开头。看看其他 SO 问题,你就会明白我的意思了。