2009-12-10 5 views
0

У меня есть следующие Regexp создать хэш значений, разделяя строку в точку с запятой:Как заставить регулярное выражение игнорировать строки URL?

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

Но я также хочу, чтобы иметь возможность 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'} 
+0

Не хотите сказать, что вы хотите: Hash ["photo: http: //www.chasejarvis.com" .scan (/ ... /)] // Результаты в {'photo' => ' http://www.chasejarvis.com '} – asgerhallas

ответ

2

Если вы хотите совместить только с первой колонией, вы можете изменить (.*)\:(.*) на ([^:]*)\:(.*).

В качестве альтернативы, вы можете сделать это не жадным совпадением, но я предпочитаю говорить «не двоеточие».

0

Как выяснить фамилию человека и имя?

Изменение chasejarvis до chase и jarvis может быть невозможно, если у вас нет решения для этого.

Вы уже знаете имя каждого в своем проекте? Никто не имеет начального среднего имени, такого как charvisdjarvis (при условии, что имя «Charvis D. Jarvis».)?