2

我想清理一个由于 OCR 而有很多错误的字幕文件。错误之一l是 显示为I。当然有时 theI真的是 a I,主要是在以下情况下:

  • 句首:I'm Ieaving...- I'm Ieaving...
  • 在名称中:IsabeIIe
  • 也许是一些奇怪的案例。

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

我怎样才能在正则表达式中做到这一点?提前致谢。

4

3 回答 3

2

如果您的正则表达式引擎支持lookbehind,您可以找到所有 I 前面都有一个小写字母,如下所示:

(?<=[a-z])I

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

[a-z]I
于 2012-05-10T17:18:11.247 回答
1

其中之一,如果您的引擎支持修饰符组。

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

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

于 2012-05-10T17:27:28.887 回答
0

/([a-z])I/将捕获前面有任何小写字母 az 的大写字母 I。

于 2012-05-10T17:16:28.563 回答