`/ s` для многострочного выражения для регулярного выражения переменной` qr // ` - PullRequest
0 голосов
/ 17 марта 2019

Я пытаюсь сопоставить и извлечь первое (как путь) слово и самое последнее слово в многострочной строке (текст = приглашение оболочки + команда + вывод). У меня есть рабочее регулярное выражение

perl -le 'print "$1/$2" if "~/src\nfind\nboards.txt" =~ m`([/~]\S+).*?(\S+)\s*$`s'
# returns expected ~/src/boards.txt

(https://regex101.com/r/uB4kN1/4 для лучшей иллюстрации)

Но у меня возникают проблемы, когда я пытаюсь использовать переменное регулярное выражение.

echo '([/~]\S+).*?(\S+)\s*$' | 
  perl -lne '$reg=qr/$_/; 
             print "$1/$2" if "~/src\nfind\nboards.txt" =~ /$reg/s';

1 Ответ

1 голос
/ 17 марта 2019

опция /s однострочная должна быть предоставлена ​​в qr//, а не в =~ // сравнении

echo '([/~]\S+).*?(\S+)\s*$' | 
 perl -lne '$reg=qr/$_/s;  # < HERE
            print "$1/$2" 
              if "~/src\nfind\nboards.txt" =~ /$reg/';
            #                               NOT HERE^
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...