相关疑难解决方法(0)

为什么没有“?” 正则表达式字符在 sed 中产生匹配?

我有一个类似于../../sdd1并试图sdd从这里匹配的字符串。我正在尝试使用以下sed命令:

echo "../../sdd1" | sed 's:.*\([a-z]\{3\}\)[0-9]?:\1:' 
Run Code Online (Sandbox Code Playgroud)

它不会产生匹配。
但是当我使用

echo "../../sdd1" | sed 's:.*\([a-z]\{3\}\)[0-9]\{0,1\}:\1:'
Run Code Online (Sandbox Code Playgroud)

然后我得到了我的比赛,sdd

我最好的猜测是我也应该转义?,类似于大括号 - 我试过它并且它有效,但我不知道为什么。

所以问题是,为什么[0-9]?正则表达式与1from不匹配sdd1,或者为什么我们必须转义 the?和大括号?

sed regular-expression

8
推荐指数
1
解决办法
6541
查看次数

标签 统计

regular-expression ×1

sed ×1