Ruby Regex: отвергая целые слова - PullRequest
7 голосов
/ 02 февраля 2011

Я знаю, что в Regex вы можете отклонить списки символов, например [^abc].Я бы хотел отказаться от просмотра всего слова в середине ввода.

Чтобы быть более точным, я бы хотел отказаться "печать". Несколько примеров:

print all - match
frokenfooster - no match
print all nomnom - no match
print bollocks - no match
print allpies - no match

Ответы [ 2 ]

12 голосов
/ 02 февраля 2011

Вы ищете негативный прогноз .( ref. с использованием упреждающего просмотра и обратного просмотра )

(?!exclude)

Дисквалифицирует слово "исключить" в шаблоне.

2 голосов
/ 02 февраля 2011

Регулярные выражения поддерживают разрыв слова \b.

Поиск слова «все» в строке так же прост:

>> 'the word "all"'[/\ball\b/] #=> "all"
>> 'the word "ball"'[/\ball\b/] #=> nil
>> 'all of the words'[/\ball\b/] #=> "all"
>> 'we had a ball'[/\ball\b/] #=> nil
>> 'not ball but all'[/\ball\b/] #=> "all"

Обратите внимание, что не требуется привязывать его к началу или концу строки, поскольку \b также распознает начало и конец строки как границы слов.

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