Руби регулярное выражение конец строки - PullRequest
2 голосов
/ 27 февраля 2010

Я пытаюсь найти переменные в строке, например,

"%0" can not be found. %1 Please try again %2

Мне нужно знать, как заканчивается каждая переменная (пробел, период, конец строки), потому что я проверю наличие этой же переменной в переведенной версии этой строки. Текст приходит из CSV, и строки не заканчиваются переводом строки.

Я могу захватить их всех, кроме тех, что в конце строки с:

reg = /[%@!][^\s]+[\s\.\z$]+/

Я думал, что $ или \z должны соответствовать концу строки, но это не похоже на работу. Как я могу захватить% 2 в приведенном выше сценарии? (опять же, в конце нет разрыва строки)

Ответы [ 2 ]

4 голосов
/ 27 февраля 2010

$ соответствует концу строки, но не при использовании внутри таких скобок. Написание [$] - это то, как вы будете выглядеть для обычного символа доллара '$'.

Если искомая строка - это та строка, которую вы перечислили выше, попробуйте

reg = /^"(.*)" can not be found[.] (.*) Please try again (.*)$/
error_string =~ reg

Ваши три соответствующих результата будут сохранены в специальных переменных $1, $2 и $3.

0 голосов
/ 27 февраля 2010

Хорошо, я решил это другим подходом. Использование позитивного взгляда работает, так как класс символов не требуется

/[%@!][\w]+(?=\s|\z|\.|\W)/

Для строки примера это возвращает:

%0

%1

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