此问题尚未标记为已回答。如果你还没有找到合适的答案,你可以试试这个:
鉴于以下示例,只有第 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
. 第三个(暂时跳过第二个)看起来像(?!...)
当前搜索模式右侧的字符不是结束</font>
标记,也不是任何类型的换行符。当该条件为真时,该.
字符将搜索推进到下一个字符,并再次检查以确保</font>
未找到该字符。它会这样做,直到找到</font>
结束标记。
第二(?:...)
组的原因是我们不希望将搜索结果传递到任何寄存器中:我们想要“<font>...</font> 标签之间的所有内容”,但实际上不包括标签。
最后,在替换术语中,我们将文本部分从 <font> 标记的右侧粘贴到单词小写的第一次出现处,并且在同一个单词遇到大写字符之前。然后它只是输入一个冒号,一个空格,然后结束。对于单行包含wordWordWordWord
.