[^is]
не говорит, что не соответствует is
, он говорит, что соответствует символу, который не i
или s
, и ваш пример имеет T
после "
, поэтому он соответствует.
Если вы хотите сопоставить ноль или более символов и исключить строку "is"
, вы можете сделать:
example.*?(\"(?:(?!is).)*?\")
Если вы хотите не совпадать с is
сразу после "
(что не , как в вашем примере):
example.*?(\"(?!is).*?\")
Вы также спрашиваете, почему example(\".*?\")
не совпадает;это регулярное выражение совпадает только в том случае, если сразу после example
стоит "
, а в вашем примере - (
.Вы можете сопоставить (
, но все же захватить строку в кавычках с:
example\((\"...