Nisam baš vešt u objašnjavanju, a i ne znam C++ (nešto malo) pa tako nisam siguran, pišem na osnovu onoga što znam iz php, js...
(?<!\w)(?=\w) ili kao u tvom primeru
(?<=\\W)(?=\\w) je zamena za \b na početku stringa
(?<=\w)(?!\w) odnosno
(?<=\\w)(?=\\W) je zamena za \b na kraju stringa
(?<=\\W)(?=\\w) pronađi "karakter" ispred koga je ne-alfanumerički karakter i iza koga je alfanumerički karakter
(?<=\\w)(?=\\W) pronađi "karakter" ispred koga je alfanumerički karakter i iza koga je ne-alfanumerički karakter
Pa tako umesto
\bSUBJECT\b može se napisati
(?<=\\W)(?=\\w)SUBJECT(?<=\\w)(?=\\W)
A
(?<=\W)(?=\w)|(?<=\w)(?=\W) bi trebalo da pronađe sve "word boundaries" u tekstu.
http://www.regular-expressions.info/wordboundaries.html
A
[] pretstavljaju Character Classes:
http://www.regular-expressions.info/charclass.html
Pa bi tako:
[(?<=\\W)(?=\\w)|(?<=\\w)(?=\\W)]
Pronađi jedan od karaktera iz grupe u zagradama [], dakle pronađi ( ili ? ili < ili = ili \W ili ...
A za backreference:
http://www.regular-expressions.info/brackets.html
i mislim da ih nije moguće koristiti unutar
[] (character Classes)