опережение должно прийти первый:
(\b(?!(the|as)\b)\w+\b)
Я также добавил границы слов, чтобы убедиться, что он соответствует только целым словам, в противном случае он потерпит неудачу, чтобы соответствовать полному слову «как», но это будет успешно соответствовать букве "s" этого слова.
Возможно, вы также захотите рассмотреть, что подходит \w
, и если это соответствует вашим потребностям. Если вы ищете слова на английском языке, вас, вероятно, интересуют буквы, но не цифры, и вы можете указать некоторые знаки препинания, которые исключаются \w
, например апострофы. Вы могли бы попробовать что-то вроде этого вместо (Rubular):
/(\b(?!(?:the|as)\b)[a-z'-]+\b)/i
Чтобы соответствовать слова более точно на человеческом языке вы могли бы рассмотреть возможность использования естественного языка библиотеки синтаксического анализа вместо регулярных выражений.
Не могли бы вы быть немного более конкретно о том, что не работает? Не соответствует ли оно некоторым словам, которые вы хотите, чтобы они соответствовали друг другу? Соответствует ли это некоторым словам, которые должны потерпеть неудачу? Можете ли вы привести несколько примеров, показывающих, где это не удается, и объяснить, что вы хотели вместо этого? –