在出现键字符串之前和之后提取字符串

时间:2016-03-28 06:57:29

标签: regex perl

我有一个像

这样的字符串
$script = "mycommand param1=arnab user=user1 mapping=arn1:schema1,arn2:schema2"

我想在mapping=之前以及在两个变量之后的所有内容中提取所有内容。
在我尝试mapping=之前提取所有内容:

$script_piece1 = $script =~ m/(.*)mapping=/;

但是我在此行收到语法错误。
如何正确地做到这一点?

1 个答案:

答案 0 :(得分:2)

您的语句完全有效,但根据$script_piece1是否包含字符串{$script,它会将mapping=设置为 true false 值{1}}

您需要将正则表达式测试放在列表上下文中,以使其返回模式中任何捕获的内容,您也可以抓住这两个部分曾经这样

my ($piece1, $piece2) = $script =~ /(.*?)mapping=(.*)/;

但它像split一样整洁,就像这样

my ($piece1, $piece2) = split /mapping=/, $script, 2;