2010-07-13 5 views

ответ

5

Вы можете использовать скобки в регулярном выражении, чтобы создать матч группы:

s="[email protected]" 
s =~ /\+([^@]*)/ && $1 
=> "subtext" 
+9

Другим синтаксисом для этого является 's [/ \ + ([^ @] *) /, 1]'. – mckeed

+2

@mckeed, я этого не знал. Очень хорошо! –

+0

спасибо людям! это только для рубина? Кроме того, что означает &&? –

2

Вы можете использовать положительное назад 'утверждение, которое я считаю, написано так:

s.match(/(?<=\+)[^@]*/) 

EDIT: Так что я только что заметил, что это вопрос Ruby, и я не знаю, включена ли эта функция в Ruby (я сам не программист Ruby). Если это так, вы можете использовать его; если нет ... Я удалю это.

+2

Это будет работать только в Ruby 1.9+ – mckeed

1

Я не знаю, Руби очень хорошо, но если вы добавляете захватывая вокруг части, которую Вы хотите, он должен работать. т.е.: \+([^@]*)

Вы можете проверить их с помощью Rubular. Этот конкретный матч здесь: http://www.rubular.com/r/pqFza9jlmX

2

Это работает для меня:

\+([^@]+) 

Мне нравится использовать Rubular для игр с регулярными выражениями. Делает отладку намного проще.