我需要搜索每个单词是大写还是小写,并对其结果进行反映。需要用XML文件编写。
找到:(?i)(?<!so and so many|.... shallow|hello)\Blo\b
字符串helo HELO
替换llo
或LLO
我所得到的只是helllo HELllo
我想要的结果是hello HELLO
我尝试使用各种方法来创建条件……条件……其他条件,但没有一个起作用。
编辑:更正后的替代物。
答案 0 :(得分:1)
首先,请注意,Boost regex后向模式必须具有固定长度,您当前的模式会使模式无效。您将需要将替代方案拆分为单独的后代。
接下来,\B
假设您只想在一个单词内匹配lo
。因此,这里最好的方法是使用正向后方的捕获组将小写或大写字母匹配并捕获到单独的组中,然后,您将能够检查匹配的组并根据需要应用替换逻辑。
要确保以区分大小写的方式进行匹配,可以使用大小写修饰符组(?-i:...)
将该外观隐藏起来。
使用
(?i)(?<!your...)(?<!words...)(?<=(?-i:([A-Z])|([a-z])))lo\b
^^^^^^^^^^^^^^^^^^^^^^^^^^
并替换为(?{1}LO:?{2}lo)
。
因此,如果lo
之前的字母是小写字母,请替换为lo
,如果是大写字母,请使用LO
作为替换字母。