linux grep with perl regex greedy 不起作用

linux grep with perl regex greedy not work

我在 linux 服务器上的 perl 版本是:

This is perl 5, version 16, subversion 3 (v5.16.3) built for x86_64-linux-thread-multi

我有一个测试如下。

echo "mac:abcdefg1234" | grep -Po "(?<=mac:).*(?=\d+)"

结果是abcdefg123

但是贪心匹配没有work.The我想要的结果是abcdefg。 如何获取 "mac:" 和 "digital" 之间的内容(尽可能多)

(?<=mac:)[^\d]*(?=\d+)这就是中间的内容。

[^\d]*表示所有长度>=0的非数字。在 [ 后键入 ^ 否定字符 class。结果是字符 class 匹配任何不在字符 class 中的字符。它还匹配(不可见的)换行符。