$str="!bypass";
我需要一个仅以正则表达式开头的返回字符串"!" 我怎样才能返回旁路?
答案 0 :(得分:3)
要匹配以!
开头的字符串,您需要此模式。 ^
是字符串开头的锚点。
/^!/
如果你想捕捉!
之后的东西,你需要这种模式。括号()
是捕获组。他们告诉Perl抓住他们之间的所有东西并保留它。 .
表示任何字符,+
是的量词,尽可能多,。所以.+
表示抓住所有内容。
/^!(.+)/
要应用它,请执行此操作。
$str =~ m/^!(.+)/;
要从该模式中获取"bypass"
,请使用由Perl自动分配的$1
匹配变量和m//
操作。
print $1; # will print bypass
要做出有条件的,那就是:
print $1 if $str =~ m/^!(.+)/;
这里的if
位于post-fix notation,可以省略块和括号。它与以下内容相同,但单个语句的读取时间更短,更容易阅读。
if ( $str =~ m/^!(.+)/ ) {
print $1;
}
如果您想永久更改$str
以在开头没有感叹号,则需要使用替换。
$str =~ s/^!//;
s///
是替换运算符。它会更改$str
。包含!
的原始值将丢失。
答案 1 :(得分:1)
使用^!\K.+
。
它的工作原理如下:
^!
- 匹配初始!
(但这很快就会改变,见下文)。\K
- 保持 - “忘记”目前为止匹配的内容,并在此处设置匹配的起点(!
之后)。.+
- 匹配非空的字符序列。由于\K
,只有最后一部分(.+
)实际匹配。