\b
находится не в том месте. Было бы искать границу слова, которая не имела бы sin / cos / tan до it. Но граница только через после любой из них будет иметь букву в конце, поэтому она должна быть границей конца слова, чего не может быть, если следующий символ - az.
Кроме того, отрицательный прогноз (если бы он работал) исключал бы строки типа cost
, что, я не уверен, что вам нужно, если вы просто фильтруете ключевые слова.
Я предлагаю:
\b(?!sin\b|cos\b|tan\b)[a-z]+[0-9]?\b
Или, проще говоря, вы можете просто сопоставить \b[a-z]+[0-9]?\b
и впоследствии отфильтровать строки в списке ключевых слов. Вам не всегда нужно все делать в регулярных выражениях.