Если вы хотите сопоставить c++
между несловарными символами (символами, отличными от букв, цифр и подчеркиваний), вы можете использовать
\bc\+\+\B
См. Демонстрационный пример regex , где\b
- это граница слова , а \B
соответствует всем позициям, не являющимся позициями границы слова.
Синтаксис C #:
var pattern = @"\bc\+\+\B";
Вы должны помнить, что \b
/ \B
зависят от контекста: \b
соответствует между началом / концом строки и соседним словом char или между словом и несловесным символом, в то время как \B
соответствует между началом / концом строки исмежный * не- * слово char или между двумя словами или двумя неслововыми символами.
Если вы строите шаблон динамически, трудно полагаться на границу слова \b
pattern.
Используйте вместо этого (?<!\w)
и (?!\w)
lookarounds, они всегда будут соответствовать слову, которому не предшествует непосредственно / сопровождается словом char:
var pattern = $@"(?<!w){Regex.Escape(word)}(?!\w)";
Если вы хотите ограничить границы словасовпадение - это пробельные границы (то есть совпадение ожидаетсятолько между пробелами), используйте
var pattern = $@"(?<!S){Regex.Escape(word)}(?!\S)";