首页 > 解决方案 > 使用 Perl 正则表达式匹配字符串的一部分

问题描述

在变量$hobbit中,我存储了值“Emulex LPe16000”。现在我需要一个正则表达式来匹配“Emulex”之后值的“LPe16000”部分。请忽略任何语法错误,我是 perl 的新手..!

$hobbit="Emulex LPe16000"
if ($hobbit = ~m/Emulex ^\w+$/)
    print "lol";

标签: regexperlsubstring

解决方案


^意味着断言字符串的开头。如果将它移到开头,则可以匹配Emulex后跟一个空格并使用它\K来忘记匹配的内容。

然后匹配 1+ 个单词字符\w+并断言字符串的结尾$

^Emulex \K\w+$

正则表达式演示| Perl 演示

如果要打印匹配项,您的代码可能如下所示:

my $hobbit="Emulex LPe16000";
if ($hobbit =~ m/^Emulex \K\w+$/) {
    print $&;
}

推荐阅读