我正在尝试解析字幕文件。示例字符串如下所示:
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 它就不再起作用了。
我不明白为什么它会表现出如此奇怪的行为。任何人都可以帮忙吗?