【发布时间】:2019-03-16 13:50:01
【问题描述】:
我有一个字符串:
my $string = "name_of_my_function(arg1,arg2,[arg3,arg4])";
我想提取函数“name_of_my_function”的名称和参数:
$arg1 = "arg1"
$arg2 = "arg2"
@arg_list = ("arg3", "arg4")
我用来提取函数的代码是:
$row =~ m/^([^\(]*)\(([^\)]*)\)/;
$function = $1;
但是,当字符串没有任何"]" 时,它可以工作,例如:
my $string = "name_of_my_function(arg1,arg2,arg3)";
但是当有"]"时它不会返回任何东西
有什么想法吗?
谢谢,
SLP
【问题讨论】:
-
"但它不返回任何内容" - 您显示的正则表达式不关心除括号外的任何特定字符;它应该捕获函数名称和所有带有或不带有
[]的参数。然后你可以在下一步解析参数,这是我推荐的(而不是单个怪物正则表达式) -
@zdim 我想这样做,但是对于字符串包含“[”或“]”的行,没有匹配项。更令人惊讶的是,当只有“[”或“]”时,匹配是可以的,但是当它们都存在时,我没有得到任何匹配