1. 程式人生 > >正則表達式 處理srt

正則表達式 處理srt

字符 空白 net 刪除行 空行 匹配 則表達式 magic rip

處理srt的<font color ="" > 所用的正則表達式為 <.*?> 而不是<.*>?

目標: 1 刪除序號行 序號行只有一個數字代表scription片段的編號, 數字可能是一位也可能是多位

   2刪除time stamp 行, 該行的標誌是 00:00:21,660 --> 00:00:26,640

   3 刪除空白行

4 刪除格式控制註釋 標誌 Laura Boyd</font><font color="#E5E5E5"> I‘m a</font>

解決方案:

刪除序號行與time stamp 行

^\d.*\s*\n可以同時刪除行號 和time stamp

刪除空白行

^\s*\n

刪除格式控制註釋

<.*?>

再加上正則表達式的 或 語句 | ,把三條語句結合到一塊

^\d.*\s*\n|^\s*\n|<.*?>

或語句 參照 http://www.nowamagic.net/librarys/veda/detail/1265

要點解析:

\n 和$的功能不同,用\n可以刪除行,$ 不行

^\d.*\s*\n

^ 表示行開頭 \d表示一位數字,.*表示任意長度字符 \s*表示任意長度,任意類型空格 \n換行 所以這句話為 每行由行首至換行內部,一個數字起始,後接任意長度字符,再接任意長度空格

^\s*\n由行首至換行,內部僅有任意長度空格

<.*?> 尖括號內部由任意長度字符串,?為最短匹配

以下為試驗版本,可看可不看


^\d{2}:.* 匹配time stamp 00:00:36,090 --> 00:00:40,260

^\d*\s*$

^\s*\n ^\s*$是有區別的,前者可以刪除空行,後者只能匹配,不能刪除

正則表達式 處理srt