Во-первых, обратите внимание, что шаблоны Boost regex lookbehind должны быть фиксированной длины, ваш текущий делает шаблон недействительным. Вам нужно будет разделить альтернативы на отдельные взгляды.
Далее \B
предполагает, что вы хотите сопоставить lo
только внутри слова. Таким образом, лучший подход здесь состоит в том, чтобы сопоставить и записать в отдельные группы строчную или заглавную букву, используя группы захвата в положительном взгляде, тогда вы сможете проверить, какая группа соответствует, и применить логику замены по мере необходимости.
Чтобы убедиться, что вы подходите с учетом регистра, вы можете обернуть этот взгляд за собой группой модификаторов регистра, (?-i:...)
.
Использование
(?i)(?<!your...)(?<!words...)(?<=(?-i:([A-Z])|([a-z])))lo\b
^^^^^^^^^^^^^^^^^^^^^^^^^^
И заменить на (?{1}LO:?{2}lo)
.
Итак, если буква перед lo
строчная, замените ее на lo
, если она была заглавной, используйте LO
в качестве замены.
