Этот вопрос не был помечен как отвеченный. Если вы все еще не нашли адекватного ответа, вы можете попробовать это:
Учитывая следующие примеры, только строки 1, 2 и 3 должны «соответствовать» вашим критериям. Строка 4 должна НЕ совпадать, поскольку не существует комбинации «строчные буквы-прописные». Строка 5 также не должна совпадать, потому что цвет шрифта (#FFFFFF) не совпадает с тем, который вы указали (в OP, а также в последующих комментариях).
<font color =#0B610B> Word word wordWord </font>
<font color =#C0C0C0> Word word wordWord </font>
<font color =#C0C0C0> wordWord wordWordwordWord </font>
<font color =#0B610B> word word word Word Word Word Wordword </font>
<font color =#FFFFFF> Word word wordWord </font>
Поисковый термин может быть написан так:
(?<=font color =#(?:0B610B|C0C0C0)>)((?:(?!</font>|[\r\n]).)*[a-z])([A-Z])
Заменяющий термин может быть записан так:
\1: \2
Поисковый термин имеет несколько вложенных скобок. Первый, (?<...)
находит тег "" слева, а затем начинает поиск с правой стороны от него. (?:0B610B|C0C0C0)
находит любой из указанных вами цветов шрифта (вы можете добавить больше, добавив больше "|" каналов) и не сохраняет их в одном из регистров \ # (например, \ 1 или \ 2).
Затем есть 3 открытия (
. Первая - это группа соответствия, которой будет сопоставляться с \1
. Третий (пропуская 2-й на данный момент), который выглядит как (?!...)
, будет выглядеть так, что символы справа от текущего шаблона поиска НЕ являются закрывающим тегом </font>
и не являются символами новой строки. Хотя это условие истинно, символ .
продвигает поиск до следующего символа, где он снова проверяет, чтобы убедиться, что </font>
не найден. Он делает это, пока не найдет закрывающий тег </font>
.
Причина второй группы (?:...)
заключается в том, что мы не хотим, чтобы этот результат поиска передавался в какие-либо регистры: нам нужно "все между ... тегами", но фактически исключая теги.
Наконец, в термине замены мы вставляем часть текста справа от тега в первое вхождение, где слово строчное и перед тем, как то же слово встречается с заглавным символом. Затем он просто входит в двоеточие, пробел и заканчивается. Возможно, вам придется выполнить эту замену несколько раз для случаев, когда в одной строке содержится wordWordWordWord
.