如何让正则表达式忽略URL字符串?

时间:2009-12-10 14:26:49

标签: ruby-on-rails ruby regex

我有以下Regexp通过以分号分隔字符串来创建值的哈希值:

Hash["photo:chase jarvis".scan(/(.*)\:(.*)/)] 
// {'photo' => 'chase jarvis'}

但是我也希望能够在字符串中包含URL并识别它,以便在URL的值侧维护URL部分,即:

Hash["photo:http://www.chasejarvis.com".scan(/(.*)\:(.*)/)] 
// Results in {'photo:http' => '//www.chasejarvis.com'}

我当然想要:

Hash["photo:chase jarvis".scan(/ ... /)] 
// {'photo' => 'http://www.chasejarvis.com'}

2 个答案:

答案 0 :(得分:2)

如果您只想匹配第一个冒号,可以将(.*)\:(.*)更改为([^:]*)\:(.*)

或者,你可以把它变成非贪婪的比赛,但我更喜欢说“不是冒号”。

答案 1 :(得分:0)

如何找出一个人的姓氏和名字?

除非您有解决方案,否则可能无法将chasejarvis更改为chasejarvis

您是否已经知道项目中每个人的名字?没有人拥有像charvisdjarvis这样的中间名的首字母(假设名字是“Charvis D. Jarvis”。)?