задача регулярного выражения - выберите результаты по id - PullRequest
0 голосов
/ 13 января 2010

Вот моя проблема с регулярным выражением: как выбрать все результаты с определенным идентификатором, например, «... ID = 99», но исключая результаты с дополнительным числом, таким как ID = «990» или «ID = 9923». Тем не менее, если строка продолжает считать другой нечисловой символ («&»), например, "... ID = 99 & PARAM = 9290" также должно быть включено.

Я совершенно сбит с толку, превращая это в выбор регулярных выражений. Буду очень признателен за любую идею по этому поводу!

(кстати, если вы действительно в регулярном выражении. Как вы узнали это? Какие-либо рекомендуемые ресурсы, книги, учебные пособия?)

Примечание. Я использую это для фильтрации результатов поиска в Google Analytics, поскольку вы можете использовать регулярные выражения в форме "Страница фильтра". Может быть, это полезная информация для вас.

Ответы [ 4 ]

1 голос
/ 13 января 2010
ID=99(?!\d)

(?!\d) является негативным прогнозом ; он утверждает, что или следующий символ не является цифрой или следующего символа нет. Вы не сказали, какой тип regex вы используете, но большинство так называемых Perl-совместимых ароматов поддерживают прогнозирование.

Что касается учебных ресурсов, учебник по регулярные выражения.info - отличное место для начала. Для углубленного изучения рекомендуется книга Гойвартса-Левитана, рекомендованная другими, но Освоение регулярных выражений по-прежнему лучше. Получить оба, если вы можете себе их позволить; Вы не пожалеете об этом.

РЕДАКТИРОВАТЬ: Чтобы быть в безопасности, вы можете использовать \bID=99(?!\d), чтобы избежать совпадения с чем-то вроде FOO_ID=99.

1 голос
/ 13 января 2010

Отвечая на вторую часть вашего вопроса:

Что касается книг, Поваренная книга регулярных выражений от O'Reilly - это фантастика. Первые несколько глав в значительной степени охватывают все основы, а затем некоторые. Остальная часть книги - конкретные примеры.

1 голос
/ 13 января 2010

Используйте \ b, границу слова, т.е.

ID = 99 \ Ъ

Для книг Рецепты регулярных выражений: подход к решению проблемы - хороший вариант.

0 голосов
/ 13 января 2010

Это будет соответствовать ID = 99 и ID = 99, за которым следует один нецифровый символ.

ID=99(:?\D)?

Если 99 был просто примером, и вы хотите сопоставить любые две цифры, вы можете использовать:

ID=\d{2}(:?\D)?
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...