哪个正则表达式可以找到我的日期时间格式?

时间:2019-06-26 10:04:57

标签: regex bash

我为带有时间的日期创建了一个正则表达式,格式如下:

25.06.19 / 16:30

我创建了以下正则表达式:

^[0-9]{2}\.[0-9]{2}\.[0-9]{4}\s.\/\s.[0-9]{2}\:[0-9]{2}$

结果应达到上述匹配条件,但事实并非如此。您能帮我修复我的正则表达式吗?

1 个答案:

答案 0 :(得分:3)

您的年份可以包含两位或四位数,请使用

regex='^[0-9]{2}\.[0-9]{2}\.[0-9]{2}([0-9]{2})?[[:space:]]*/[[:space:]]*[0-9]{2}:[0-9]{2}$'
#                                   ^^^^^^^^^^^

Bash demo

s="25.06.19 / 16:30"
regex='^[0-9]{2}\.[0-9]{2}\.[0-9]{2}([0-9]{2})?[[:space:]]*/[[:space:]]*[0-9]{2}:[0-9]{2}$'
if [[ "$s" =~ $regex ]]; then
  echo "Matched!"
fi;

请注意,我还用\s替换了[[:space:]],该/应该在Bash中得到更广泛的支持,并且/不需要转义,因为这里没有正则表达式分隔符,并且\s.\/\s.不是特殊的正则表达式元字符。此外,.中的点是可疑的,我了解您想匹配任意0个或多个空格,因此我将*替换为{{1}}。