Regex Perl最后一个模式补丁变量

Regex Perl最后一个模式补丁变量,regex,perl,scripting,Regex,Perl,Scripting,我对perl相对来说是个新手,在最近的学习中,我最终使用了一些脚本并偶然发现了这个正则表达式 $+表示 最后一个括号与最后一个搜索模式匹配。如果您不知道一组备选模式中的哪一个匹配,这将非常有用。例如: /版本:.*|修订版:.*/&&rev=$+ 听起来很有趣,但我不明白它到底是做什么的,有人能帮我了解一下它的用法吗 我还发现了一些例子,说明如下: $Regexp附加捕获持有者。$持有捕获缓冲区信息 正则表达式- Version:\ ( .* ) # (1)

我对perl相对来说是个新手,在最近的学习中,我最终使用了一些脚本并偶然发现了这个正则表达式

$+表示 最后一个括号与最后一个搜索模式匹配。如果您不知道一组备选模式中的哪一个匹配,这将非常有用。例如: /版本:.*|修订版:.*/&&rev=$+

听起来很有趣,但我不明白它到底是做什么的,有人能帮我了解一下它的用法吗

我还发现了一些例子,说明如下:

$Regexp附加捕获持有者。

$持有捕获缓冲区信息

正则表达式-

   Version:\ 
   ( .* )            # (1)
|  
   Revision:\ 
   ( .* )            # (2)
代码-

if ( $str =~ /Version: (.*)|Revision: (.*)/ )
{
    if ( defined $1 ) {
        $ver = $1;
    }
    elsif ( defined $2 ) {
        $rev = $2;
    }
}
$保存捕获缓冲区信息

正则表达式-

   Version:\ 
   ( .* )            # (1)
|  
   Revision:\ 
   ( .* )            # (2)
代码-

if ( $str =~ /Version: (.*)|Revision: (.*)/ )
{
    if ( defined $1 ) {
        $ver = $1;
    }
    elsif ( defined $2 ) {
        $rev = $2;
    }
}

正则表达式可以有捕获组,在成功匹配后,捕获组包含该部分模式的匹配子字符串:

/Version: (.*)|Revision: (.*)/
#         $1             $2
从左到右依次列举为$1、$2、…。有时,我们可能希望访问最后一次成功捕获。例如:

"Version: v123"  → "v123"
"Revision: v678" → "v678"
因此,我们要么需要1美元,要么需要2美元,它们不会同时被填满。我们可以做到:

/Version: (.*)|Revision: (.*)/ and $rev = ($1 // $2)
它使用//定义的or运算符。或者我们可以使用$+引用最近成功捕获的任何内容。你可以把它想象成$-1:最后一个捕获组,只是它不是源代码中的最后一个,而是最近的一个

在这个简单的示例中,使用$+可能有意义,但我从未实际使用过它。更好的解决办法包括:

使用可通过%+哈希访问的命名捕获:


正则表达式可以有捕获组,在成功匹配后,捕获组包含该部分模式的匹配子字符串:

/Version: (.*)|Revision: (.*)/
#         $1             $2
从左到右依次列举为$1、$2、…。有时,我们可能希望访问最后一次成功捕获。例如:

"Version: v123"  → "v123"
"Revision: v678" → "v678"
因此,我们要么需要1美元,要么需要2美元,它们不会同时被填满。我们可以做到:

/Version: (.*)|Revision: (.*)/ and $rev = ($1 // $2)
它使用//定义的or运算符。或者我们可以使用$+引用最近成功捕获的任何内容。你可以把它想象成$-1:最后一个捕获组,只是它不是源代码中的最后一个,而是最近的一个

在这个简单的示例中,使用$+可能有意义,但我从未实际使用过它。更好的解决办法包括:

使用可通过%+哈希访问的命名捕获:


不确定,但$+可能是组号。在本例中,如果$+==2{则匹配refision}。我可能错了。这听起来像是命名的捕获组哈希。i、 e.$+{name}。不确定,但$+可能是组号。在本例中,如果$+==2{则匹配refision}。我可能错了。这听起来像是命名的捕获组哈希。i、 e.$+{name}.named captures是我想看到的,我们有几行类似的代码,$item=~/?.\.tst/;/看起来像是捕获了我在if$c_attr_val eq$+{itemName}中比较的内容{我使用了这里的最后一个匹配项进行比较。希望我正在制作Sensenaed捕获,这是我想看到的,我们有几行代码看起来类似,$item=~/?.\.tst/;//看起来像是捕获了在if$c_attr_val eq$+{itemName}中比较的内容{我用最后一场比赛来比较。希望我说得通