Недавно я столкнулся с аналогичной проблемой в javascript, пытаясь сопоставить термины с ведущим символом $, только как отдельные слова, например. if $ hot = 'FUZZ', тогда:
"some $hot $hotel bird$hot pellets" ---> "some FUZZ $hotel bird$hot pellets"
Регулярное выражение /\b\$hot\b/g
(мое первое предположение) не срабатывало по той же причине, что и parens не совпадали в исходном вопросе - как не-слово символов нет границы слова / не-слова, предшествующей им с пробелом или началом строки.
Однако соответствие регулярного выражения /\B\$hot\b/g
, что показывает, что позиции, не отмеченные в превосходном примере @ timwi, соответствуют \ B термин. Это было неинтуитивно для меня, потому что ") ("
не состоит из символов слова регулярного выражения. Но я предполагаю, что, поскольку \ B является инверсией класса \ b, он не должен быть символами слов, он просто должен быть несловными символами:)