我有一个像
这样的字符串$script = "mycommand param1=arnab user=user1 mapping=arn1:schema1,arn2:schema2"
我想在mapping=
之前以及在两个变量之后的所有内容中提取所有内容。
在我尝试mapping=
之前提取所有内容:
$script_piece1 = $script =~ m/(.*)mapping=/;
但是我在此行收到语法错误。
如何正确地做到这一点?
答案 0 :(得分:2)
您的语句完全有效,但根据$script_piece1
是否包含字符串{$script
,它会将mapping=
设置为 true 或 false 值{1}}
您需要将正则表达式测试放在列表上下文中,以使其返回模式中任何捕获的内容,您也可以抓住这两个部分曾经这样
my ($piece1, $piece2) = $script =~ /(.*?)mapping=(.*)/;
但它像split
一样整洁,就像这样
my ($piece1, $piece2) = split /mapping=/, $script, 2;