[英]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.