Это потому, что поисковый запрос нацелен на позицию между символами, а не на сам символ.
Если мы читаем ваше регулярное выражение как 3 шага:
- Соответствует символу
q
- Убедитесь, что следующим символом является
u
(он есть) - это соответствует позиции, где u
является следующим символом - После просмотра убедитесь, что следующий символ является
i
- это не так, потому что вы все еще находитесь в позиции, где следующий символ является u
.
Обозначения обычно используются для поиска начала / конца совпадения с подстановочными знакамиНапример, если вы хотите сопоставить ТОЛЬКО часть слова после qu
, вы можете использовать оглядку назад, чтобы найти начало захвата:
(?<=\bqu)
Затем перехватите любой символ доконец слова:
(?<=\bqu).*?\b
Это будет соответствовать таким вещам, как:
quit => it
question => estion
quagmire => agmire
Обратите внимание, взгляд позади обозначил НАЧАЛО матча, без необходимости знать, какой первый символматча будет.