Ответ 1
Двигатели Regex имеют разные представления о том, как работают классы сокращенных символов. \b
тесно связан с \w
, который почти бесполезен почти во всех задачах регулярных выражений, но, к сожалению, достаточно "достаточно хорош" для многих случаев, чтобы оправдать его дальнейшее существование.
В этом случае JavaScript учитывает только ASCII [a-zA-Z0-9_]
для \w
, а так как \b
соответствует местоположению между символом из \w
и тем, что вы не получите, наблюдаемое поведение.
Обычным обходным решением является использование lookaround вместо \b
:
(?<![a-zA-ZäöüßÄÖÜ])Pflanzen((?![a-zA-ZäöüßÄÖÜ]))
Однако JavaScript также не поддерживает lookbehind, поэтому нам нужно сделать что-то еще:
(^|[^a-zA-ZäöüßÄÖÜ])Pflanzen(?![a-zA-ZäöüßÄÖÜ])
который соответствовал бы началу строки или символу не из этого класса. В любом случае, это беспорядочно. Это о времени, JavaScript получает правильную поддержку регулярных выражений, включая Unicode и lookaround.