3) Не совпадать, если в середине строки (спасибо, ничего).
Вы можете написать reg ex для проверки ". * Boolean. *". Но что, если внутри строки есть кавычка (")? Итак, у вас есть больше работы, чтобы не исключать (\") шаблон.
4) Не совпадать, если в комментарии. (// или / * * /)
Для '//' вы можете иметь регулярное выражение для исключения //.* Но лучше было бы сначала добавить регулярное выражение для сравнения всей строки для // комментариев ((. *) (//.* )), а затем примените замену только к 1 доллару (первый соответствующий шаблон).
Для / * * / это более сложно, так как это многострочный шаблон. Один из подходов может состоять в том, чтобы сначала выполнить весь ваш код, чтобы он соответствовал многострочным комментариям, а затем удалить только те части, которые не соответствуют ... что-то вроде ... (. *) (/*.**/) (. *). Но фактическое регулярное выражение будет еще более сложным, поскольку у вас будет не один, а несколько многострочных комментариев.
Теперь, что если у вас есть / * или * / внутри // блока? (Я не знаю, зачем вам это нужно ... но закон Мерфи гласит, что вы можете иметь это). Очевидно, что есть какой-то выход, но моя идея состоит в том, чтобы подчеркнуть, насколько плохим будет регулярное выражение.
Мое предложение здесь состоит в том, чтобы использовать некоторый лексический инструмент для C ++ и заменить токен Boolean на bool. Ваши мысли?