字幕ファイルを解析しようとしています。そして、サンプル文字列は次のようになります。
00:00:01,000-> 00:00:04,074
私はこの正規表現を持っています:
#!/bin/bash
while read line
do
if [[ "$line" =~ ^[0-9]{2}:[0-9]{2}:[0-9]{2},[0-9]{3}* ]]
then
echo $line
fi
done < $1
この正規表現は機能し、線をエコーします。しかし、ifステートメントのパターンを次のように拡張すると:
if [[ "$line" =~ ^[0-9]{2}:[0-9]{2}:[0-9]{2},[0-9]{3}*--* ]]
その後、それはもう動作しません。
同様に、この正規表現は機能します:
while read line
do
if [[ "$line" =~ [0-9]{2}*[0-9]{2}*[0-9]{2}*[0-9]{3}*--\>*[0-9]{2}*[0-9]{2}*[0-9]{2}*[0-9]{3}* ]]
then
echo $line
fi
done < $1
しかし、^
(最初の場合のように)パターンの先頭に配置した場合、または:
sとsを使用した場合、,
それは機能しなくなります。
なぜこんな奇妙な振る舞いをするのかわかりません。誰か助けてもらえますか?