正则表达式:仅匹配前面小写字母的字符

时间:2012-05-10 17:11:53

标签: regex

我想清理由于OCR而导致许多错误的字幕文件。在错误上,l显示为I。当然有时I实际上是I,主要是在:

的情况下
  • 句子的开头:I'm Ieaving...- I'm Ieaving...
  • 名称中:IsabeIIe
  • 可能是一些奇怪的案例。

由于名称难以检测,我认为最好只用一个或多个前面的小写字母替换I,并手动检查其余部分。因此,在转换后,我得到I'm IeavingIsabelle。这是我能想到的最“准系统”的自动化解决方案,因为没有那么多单词字母直接在大写字母之前。

如何在Regex中执行此操作?提前谢谢。

3 个答案:

答案 0 :(得分:2)

如果你的正则表达式引擎支持lookbehind,你可以找到我之前的小写字母,如下所示:

(?<=[a-z])I

否则,您可以匹配两个字符,第二个字符将是I。

[a-z]I

答案 1 :(得分:1)

其中一个,如果您的引擎支持修改器组。

(?-i:(?<=[a-z])I)
or
(?-i:[a-z]I)

对于Unicode,您需要使用属性。

答案 2 :(得分:0)

/([a-z])I/会捕获大写字母,前面是任何小写字母a-z。