Ответ 1
Вы не говорите, какой вкус регулярного выражения вы используете, но это должно работать в целом:
Tom(?!\s+Thumb)
Я пытаюсь найти все вхождения "Тома", за которыми не следует "Thumb".
Я попытался найти
Tom ^((?!Thumb).)*$
но я все равно получаю строки, соответствующие Tom Thumb.
Вы не говорите, какой вкус регулярного выражения вы используете, но это должно работать в целом:
Tom(?!\s+Thumb)
Если вы не ищете целые слова, вы можете использовать следующее регулярное выражение:
Tom(?!.*Thumb)
Смотрите это демо-версия regex
Если вы ищете целые слова (т.е. целое слово Tom
следует сопоставлять только в том случае, если целое слово Thumb
находится справа от него), используйте
\bTom\b(?!.*\bThumb\b)
Смотрите еще одну демонстрацию regex
Обратите внимание, что:
\b
- соответствует границе верхнего/нижнего слова(?!.*Thumb)
- это отрицательный результат, который не соответствует совпадению, если есть какие-либо символы 0+ (в зависимости от двигателя, включая/исключая символы строки), а затем Thumb
. Tom(?!\s+Thumb)
- это то, что вы ищете.