我正在尝试匹配并提取多行字符串(文本= shell提示+命令+输出)中的第一个(路径类似)单词和最后一个单词。我有一个正常的正则表达式
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';
答案 0 :(得分:1)
/s
中不应在qr//
比较中提供=~ //
单字符串选项
echo '([/~]\S+).*?(\S+)\s*$' |
perl -lne '$reg=qr/$_/s; # < HERE
print "$1/$2"
if "~/src\nfind\nboards.txt" =~ /$reg/';
# NOT HERE^