Сопоставление всех слов, кроме одного

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

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

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

Ответы

Ответ 1

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

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

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

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

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

Ответ 2

Try:

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

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

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

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

Ответ 3

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

answer = yourString.Replace( "boy", "" );

Ответ 4

/\b(?!boy)\S+/g

Ответ 5

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

>>> re.split("boy","I am a good buy and bad boy too")
['I am a good buy and bad ', ' too']

Ответ 6

Замените мальчика на ничего... в Perl, который будет:

s/boy //g