Регулярное выражение - исключая символ - PullRequest
4 голосов
/ 13 июля 2010

Вот пример:

s = "abcd+subtext@example.com"

s.match (/ + [^ @] * /)

Result => "+ subtext"

Дело в том, что я не хочу включать туда "+". Я хочу, чтобы результат был "подтекстом", без +

Ответы [ 4 ]

5 голосов
/ 13 июля 2010

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

s="abcd+subtext@example.com"
s =~ /\+([^@]*)/ && $1
=> "subtext"
2 голосов
/ 13 июля 2010

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

\+([^@]+)

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

2 голосов
/ 13 июля 2010

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

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

РЕДАКТИРОВАТЬ : Итак, я только что заметил, что это вопрос Ruby, и я не знаю, есть ли эта функция в Ruby (я сам не программист Ruby). Если это так, вы можете использовать его; если нет ... я удалю это.

1 голос
/ 13 июля 2010

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...