/ s用于多行变量正则表达式qr //

时间:2019-03-16 21:10:43

标签: regex perl

我正在尝试匹配并提取多行字符串(文本= 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';

1 个答案:

答案 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^