Поскольку Boost кажется механизмом регулярных выражений для C ++, а one режимов совместимости - это совместимость perl - если это выражение "совместимо с perl", чем второй 'b' может только быть буквальным.
Это правильное выражение, в значительной степени особый случай для слов, начинающихся с 'b'.
Кажется, решающим фактором является то, что это библиотека c ++, и что она должна предоставлять средам, которые не являются perl-совместимыми с perl регулярными выражениями. Таким образом, моя первоначальная мысль, что perl может интерпретировать выражение (скажем, с помощью overload::constant
), неверна. И все же стоит упомянуть только для пояснения, независимо от того, насколько нецелесообразным было бы подгонять выражение, означающее «слово, начинающееся с« б »».
Единственная оговорка к этой идее заключается в том, что возможно Boost превосходит Perl по собственному выражению, и кто-то будет использовать Boost в среде Perl, тогда все ставки сделаны от того, могло ли это быть предназначено как специальное выражение. Это всего лишь один удар, учитывая грамматику, где '!!!' означало что-то особенное в начале слов, вы могли бы добавить в установленное значение, как это (НЕ РЕКОМЕНДУЕТСЯ!)
s/\\bb\b/(?:!!!(\\p{Alpha})|\\bb)/
Это было бы глупо, но, поскольку мы имеем дело с кодом, который кажется непригодным для его задачи, существуют тысячи способов потерпеть неудачу при выполнении задачи.