Как создать регулярное выражение, соответствующее шаблону, за исключением некоторых строк в Ruby? - PullRequest
2 голосов
/ 17 августа 2010

Я работаю в Ruby, и мне нужно создать одно регулярное выражение для следующей задачи, так как я работаю с чужим гемом, который использует это регулярное выражение для сопоставления полей, над которыми нужно работать в текстовом файле.Мне нужно сопоставить начало строки, любой набор символов и подчеркивание, затем любое многозначное целое число, которое не является 1,2, 9 или 10, и конец строки.
Т.е. я хочу, чтобы следующее совпадало:

foo_4
bar_8
baz_120

НО НЕТ:

foo_1
bar_9
baz_10

Я пытался

/^.+_(^(1|2|9|10))$/

, но это не сработало, так как, очевидно, ^ только "сводит на нет" символы в скобках, не совпадает.

1 Ответ

5 голосов
/ 17 августа 2010

За пределами класса символов символ ^ означает начало строки. Я думаю, что вы хотите негативный взгляд вместо:

/^.+_(?!(?:1|2|9|10)$)\d+$/

См. Это в действии на Рубуляр .

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