2012-05-10 36 views
1

我想清理由於OCR而導致許多錯誤的字幕文件。出現錯誤的是l顯示爲I。當然有時候I確實是一個I,主要是在的情況下:正則表達式:僅匹配帶前面小寫字母的字符

  • 一個句子的開頭:I'm Ieaving...- I'm Ieaving...
  • 在名字:IsabeIIe
  • 也許有些奇怪的例子。

由於名字是難以察覺的,我想這將是最好只與一個或多個在前一個小寫字母代替I的和人工檢查的其餘部分。所以在轉換後我得到I'm IeavingIsabelle。這是我能想到的最「自由」的自動化解決方案,因爲在大寫字母前面沒有那麼多的小寫字母。

我該如何在正則表達式中做到這一點?提前致謝。

回答

2

如果您正則表達式引擎支持回顧後,你可以找到所有我的前面加上這樣的小寫字母:

(?<=[a-z])I 

否則,你可以匹配這兩個字符,而第二個將是一

[a-z]I 
+0

這回答了這個問題,但@ KeyMs92並沒有想到這一點。你也應該在另一個大寫字母I(也可能是其他大寫字母)之後尋找一個大寫字母。認爲'IsabeIIe'和'BIuetooth'。 –

+0

你是對的,但我已經想通了。正如我所提到的,我試圖找到一個避免錯誤的準系統自動化解決方案。只有尋找前面的小寫字母幾乎是最小的。擴大表達式將消除「藍牙」,但引入了例如'DlY'。無論如何,感謝您的回答,它完全有效! – Daan

0

/([a-z])I/將捕獲大寫字母I的前面是任何小寫字母a-z。

1

其中之一,以及您的引擎是否支持修飾符組。

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

對於Unicode,您需要使用屬性。

相關問題