【发布时间】:2020-01-02 15:25:21
【问题描述】:
我有一个测试字符串 repo-2019-12-31-14-30-11.gz,我想从该字符串中排除 2019-12-31-14-30-11.gz 并匹配其他所有内容。日期和小时的数字可以不同。文本开头的字符串可以是任何单词,可以包含数字、破折号或下划线。常量字符是:
- 回购名称和日期之间的破折号
-
.gz在文末
我尝试了以下正则表达式:
^.*(?!-\d{4}-\d{2}-\d{2}-\d{2}-\d{2}-\d{2}.gz$)
但它总是匹配整个文本
【问题讨论】:
-
Digits with date and hour can be different.是什么意思?格式可以与您当前匹配的格式不同吗?如果是这样,你能用可能的格式更新问题吗? -
不,格式始终相同,但日期可以不同。
-
你测试过这些模式吗?工具或语言是什么?
-
你是这个意思吗?
echo "repo-2019-12-31-14-30-11.gz" | sed -En 's/^([[:alnum:]-]+)-[[:digit:]]{4}-[[:digit:]]{2}-[[:digit:]]{2}-[[:digit:]]{2}-[[:digit:]]{2}-[[:digit:]]{2}\.gz$/\1/p' -
是的! thx :D 我不知道为什么
sed不能使用正确的正则表达式语法
标签: regex