linux grep с perl regex жадные алгоритмы не работают - PullRequest
0 голосов
/ 06 сентября 2018

Моя версия Perl на Linux-сервере:

Это perl 5, версия 16, subversion 3 (v5.16.3), созданная для x86_64-linux-thread-multi

У меня есть тест, как показано ниже.

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

Результат abcdefg123.

Но жадное совпадение не работает. Я хочу получить результат abcdefg. Как я могу получить контент между «mac:» и «digital» (столько, сколько разрешено)

1 Ответ

0 голосов
/ 06 сентября 2018

(?<=mac:)[^\d]*(?=\d+) это содержимое между.

[^\d]* означает, что все не цифровые с длиной> = 0. Ввод ^ после [ отменяет класс символов. В результате класс символов соответствует любому символу, отсутствующему в классе символов. Он также соответствует (невидимым) символам разрыва строки.

...