Regex perl正则表达式子字符串

Regex perl正则表达式子字符串,regex,perl,Regex,Perl,我需要只以regex开头的返回字符串“!” 如何返回旁路?以匹配以开头的字符串您需要此模式。^是字符串开头的锚点 $str="!bypass"; 如果你想在之后捕获这些东西,您需要此模式。括号()是一个捕获组。他们告诉Perl抓取他们之间的所有内容并保存它。表示任何字符,+是尽可能多的量词,至少一个。所以+意味着抓住一切 要应用它,请执行以下操作 /^!(.+)/ 要从该模式中获得“旁路”,请使用Perl通过m/操作自动分配的$1匹配变量 $str =~ m/^!(.+)/; 要使之有条件

我需要只以regex开头的返回字符串“!”
如何返回旁路?

以匹配以
开头的字符串您需要此模式。
^
是字符串开头的锚点

$str="!bypass";
如果你想在
之后捕获这些东西,您需要此模式。括号
()
是一个捕获组。他们告诉Perl抓取他们之间的所有内容并保存它。
表示任何字符,
+
是尽可能多的量词,至少一个。所以
+
意味着抓住一切

要应用它,请执行以下操作

/^!(.+)/
要从该模式中获得
“旁路”
,请使用Perl通过
m/
操作自动分配的
$1
匹配变量

$str =~ m/^!(.+)/;
要使之有条件,它将是:

print $1; # will print bypass
此处的
if
在中,可以省略块和括号。它与下面的内容相同,但是对于单个语句,它更简短、更容易阅读

print $1 if $str =~ m/^!(.+)/;
如果要将
$str
永久更改为在开头没有感叹号,则需要使用替换

if ( $str =~ m/^!(.+)/ ) {
    print $1;
}

s//
是替换运算符。它在适当的位置更改
$str
。原始值包括
将丢失

以匹配以
开头的字符串您需要此模式。
^
是字符串开头的锚点

$str="!bypass";
如果你想在
之后捕获这些东西,您需要此模式。括号
()
是一个捕获组。他们告诉Perl抓取他们之间的所有内容并保存它。
表示任何字符,
+
是尽可能多的量词,至少一个。所以
+
意味着抓住一切

要应用它,请执行以下操作

/^!(.+)/
要从该模式中获得
“旁路”
,请使用Perl通过
m/
操作自动分配的
$1
匹配变量

$str =~ m/^!(.+)/;
要使之有条件,它将是:

print $1; # will print bypass
此处的
if
在中,可以省略块和括号。它与下面的内容相同,但是对于单个语句,它更简短、更容易阅读

print $1 if $str =~ m/^!(.+)/;
如果要将
$str
永久更改为在开头没有感叹号,则需要使用替换

if ( $str =~ m/^!(.+)/ ) {
    print $1;
}

s//
是替换运算符。它在适当的位置更改
$str
。原始值包括
将丢失

使用
^\K.+

它是这样工作的:

  • ^-匹配首字母
    (但这很快就会改变,见下文)
  • \K
    -保留“忘记”到目前为止匹配的内容,并在此处设置匹配的起点(在
    之后)
  • +
    -匹配字符的非空序列

由于
\K
,只有最后一部分(
+
)实际匹配。

使用
^\K.+

它是这样工作的:

  • ^-匹配首字母
    (但这很快就会改变,见下文)
  • \K
    -保留“忘记”到目前为止匹配的内容,并在此处设置匹配的起点(在
    之后)
  • +
    -匹配字符的非空序列

由于
\K
,只有最后一部分(
+
)是实际匹配的。

什么意思?是否要删除字符串开头的感叹号?什么意思?是否要删除字符串开头的感叹号?在实际程序中如何使用与
\K
的匹配?它的逻辑是什么?您可以对其进行编程,例如:my$str=“!bypass”;如果($str=~/^!\K.+/){print“Match:$&\n”}或者{print“No Match\n”}当然,匹配的内容在\K之后。您应该将其添加到您的答案中。这是一种更高级的技术,实际上我不知道
\K
。在实际的程序中如何使用与
\K
的匹配?它的逻辑是什么?您可以对其进行编程,例如:my$str=“!bypass”;如果($str=~/^!\K.+/){print“Match:$&\n”}或者{print“No Match\n”}当然,匹配的内容在\K之后。您应该将其添加到您的答案中。这是一种更先进的技术,实际上我不知道
\K