代码之家  ›  专栏  ›  技术社区  ›  Will

`/S`用于变量正则表达式的多行'QR//`

  •  0
  • Will  · 技术社区  · 7 年前

    我正在尝试匹配和提取多行字符串中的第一个(类似路径)单词和最后一个单词(text=shell prompt+command+output)。我有一个有效的正则表达式

    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 回复  |  直到 7 年前
        1
  •  1
  •   Will    7 年前

    这个 /s 应在以下位置提供单字符串选项: qr// 不在 =~ // 比较

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