繁体   English   中英

Perl正则表达式子字符串

[英]perl regex substring

$str="!bypass";

我需要仅以正则表达式“!”开头的返回字符串。 如何返回旁路?

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

/^!/

如果您想在之后捕获东西! ,您需要此模式。 括号()捕获组 他们告诉Perl抓住它们之间的所有东西并保留它。 . 表示任何字符 ,而+表示尽可能多的量,至少一个 所以.+意味着抓住一切

/^!(.+)/

要应用它,请执行此操作。

$str =~ m/^!(.+)/;

要使"bypass"脱离该模式,请使用Perl通过m//操作自动分配的$1匹配变量。

print $1; # will print bypass

要使其成为条件,将是:

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

if后缀表示法 ,可让您省略块和括号。 与以下相同,但对于单个语句更短且更易于阅读。

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

如果要永久性地将$str更改$str一开始没有感叹号,则需要使用替代符号。

$str =~ s/^!//;

s///是替换运算符。 它将$str更改到位。 原始值包括! 会迷路。

使用^!\\K.+

它是这样工作的:

  • ^! -匹配初始! (但这很快就会改变,请参阅下文)。
  • \\K 保留 -“忘记”您到目前为止已匹配的内容,并在此处(在! )设置匹配的起点。
  • .+ -匹配非空字符序列。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM