突出显示文本
时候我有一个字符串:Something 8:45 foo bar foo bar at 23:50
突出显示文本
如何突出和标记与<b>
标签的所有时间组合,串状8:45和23:50? 因此,我希望有Something <b>8:45</b> foo bar foo bar at <b>23:50</b>
你可以这样做:
"Something 8:45 foo bar foo bar at 23:50".gsub(/\d{1,2}:\d{2}/).each {|hour| hour = "<b>#{hour}<b>" }
识别小时,用<b>hour<b>
容易
替换([0-9] {1,2}:[0-9] {1,2})与 '$ 1'
这只是返回相同的字符串。使用括号和'$ 1'是多余的。改用'$ 0'。 – sawa 2011-05-20 19:32:37
使用以下正则表达式/((2[0-3])|(1[0-9])|(0?[0-9])):([0-5]?[0-9])/
匹配,因为它还会检查时间是正确的格式
请解释这个正则表达式有什么问题,所以它得到了一个downvote – 2011-05-20 20:06:20
我会在分钟的第一个数字中说'?',因为没有人会在下午13:4记录。我喜欢你限制正则表达式只匹配有效时间。 – Chubas 2011-05-20 20:26:43
>> "Something 8:45 foo bar foo bar at 23:50".gsub(/\b\d{1,2}:\d{2}\b/, '<b>\0</b>')
#=> "Something <b>8:45</b> foo bar foo bar at <b>23:50</b>"
编辑替换每一个:如果你需要,你可以为正确的时间正则表达式检查,但我并没有理会这个例子。
这不是问什么。 – sawa 2011-05-20 19:31:38
谢谢JCorcuera! – Kir 2011-05-20 19:38:03
你不需要'each','gsub'可以占据一个块。但是你也不需要,因为它可以在'gsub'中直接完成(参见下面的答案)。 – 2011-05-20 20:07:50