搜索并替换大写字符串中的字符

时间:2015-01-21 07:36:09

标签: regex

我有一个巨大的文本文件,其中包含大量小写与大写字符混合的拼写错误,但只有字母“l”(小写字母L),并且只有大写字母,以这种形式:

VERONlCA, SPEAKlNG, lMITATlON, ENGLlSH

所以我想在大写单词中替换所有字符'l'(小写L)(因为有许多小写单词包含正常方式的小写'L'),前一个字符是大写的连续的字符也是大写的。像[AZ] [l] [AZ]之类的东西,用小写的'I'替换小写的'L'(如在MIKE中),但保持大写单词的其余部分完好无损,并且不影响小写字符串的其余部分。文件(所以'想象'不会成为'想象')。

我正在使用查找和替换框,那么我应该在查找框中键入什么以及我应该在替换框中键入什么内容?

3 个答案:

答案 0 :(得分:0)

([A-Z]|\b)l([A-Z])替换为\1L\2。斜杠引用组。

根据程序的不同,它也可能是$1L$2

答案 1 :(得分:0)

我发现无论你用什么软件进行搜索和替换,都必须拥有“匹配案例”。检查。

首先,我最终使用了两个正则表达式命令:

查找

([A-Z])l([A-Z]+) 

替换为

$1I$2

使用这个,你确保只对大写单词执行更改,小写单词将完全不受影响,因为[AZ] +将确保小写L旁边的连续字符是大写的,没有它,它将匹配也是小写的单词。

(l)([A-Z]+) 

替换为

I$2

确保它匹配以小写L开头的单词。

我确定我可以将这两个命令合二为一,但我不知道。

答案 2 :(得分:0)

如果您想处理领先和尾随l,您可以执行以下操作:

查找:\b(?:([A-Z]+)l([A-Z]+)|l([A-Z]+)|[A-Z]+l)\b
替换:\U$0