Соответствие всем словам, кроме одного - PullRequest
21 голосов
/ 21 января 2010

Скажите, что у меня есть предложение:

Я тоже хорошая покупка и плохой мальчик

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

Ответы [ 6 ]

42 голосов
/ 21 января 2010

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

\w+\b(?<!\bboy)

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

(?!boy\b)\b\w+

Здесь вы можете прочитать о негативном прогнозе здесь

10 голосов
/ 21 января 2010

Попробуйте:

\b(?!boy\b).*?\b

, что означает:

  • Разрыв слова нулевой ширины (\b)
  • За этим не следует "мальчик" и еще один разрыв слова;
  • с любыми жадными символами, за которыми следуют любые символы;
  • Вплоть до следующего слова.

Примечание: разрыв слова соответствует началу строки, концу строки и любому переходу от слова (числа, буквы или подчеркивания) к несловесному символу или наоборот.

3 голосов
/ 21 января 2010
/\b(?!boy)\S+/g
3 голосов
/ 21 января 2010

Какой язык? Почему вы хотите использовать регулярное выражение?

answer = yourString.Replace( "boy", "" );
1 голос
/ 21 января 2010

Если вы используете «мальчика» в качестве сплиттера, вы получите оставшиеся части. Вы можете использовать их в качестве клавиш выбора.

>>> re.split("boy","I am a good buy and bad boy too")
['I am a good buy and bad ', ' too']
1 голос
/ 21 января 2010

Замените мальчика на ничто ... в Perl это будет:

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