【问题标题】:Perl regex extracting a match using bracesPerl 正则表达式使用大括号提取匹配项
【发布时间】:2013-04-18 17:44:43
【问题描述】:

我测试了以下代码

#! /usr/bin/perl 

use strict;
use English;

#this code extracts the current scripts filename 
#by removing the path from the filepath

my $Script_Name = $PROGRAM_NAME;

${Script_Name} =~ s/^.*\\//; #windows path

#${Script_Name} =~ s/^.*\///; #Unix based path

print $Script_Name;

我不明白为什么这些大括号在不使用 /r 修饰符的情况下提取匹配项。任何人都可以解释为什么以及如何工作或指向一些文档吗?

【问题讨论】:

    标签: regex perl filepath


    【解决方案1】:

    你有点糊涂了!

    大括号没有区别。 ${Script_Name}$Script_Name 相同。

    您的代码首先将脚本文件的整个路径从$PROGRAM_NAME 复制到$Script_Name

    然后替换删除直到最后一个反斜杠(包括最后一个反斜杠)的所有内容,只留下文件名。

    /r 修饰符将用于如果您想修改一个字符串并将修改结果放入另一个字符串,因此您可以一步编写代码

    $Script_Name = $PROGRAM_NAME=~ s/^.*\\//r
    

    【讨论】:

      猜你喜欢
      • 2012-10-18
      • 1970-01-01
      • 2023-04-02
      • 1970-01-01
      • 2011-12-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多