使用正则表达式检查params的语法

时间:2014-07-10 01:29:06

标签: regex perl

我知道$ msg有多少参数但是我无法弄清楚如何计算$ cmd_data中{x}的数量。 如果我有两个计数,我可以比较,然后看看用户是否为cmd输入了足够的参数。

我用m / {(\ d +)} / g尝试了它,然后使用标量来获取匹配数。 但这总是归零。

用$ msg中的params替换$ cmd_data中的{x}的代码。

my $syntax_error = 0;
my @params = split(/\s+/, $msg); 
my $msg_param_count = @params;

for(my $i = 1; $i < $msg_param_count; $i++) {
    $cmd_data =~ s/\{$i\}/$params[$i]/g;
}

$server->command(sprintf("msg $target %s.", $cmd_data));

输出

$msg = "!test param1 param2 param3";
$cmd_data = "test command: {1} {2} {3}";
$output = "test command: param1 param2 param3";

1 个答案:

答案 0 :(得分:2)

计算字符串中匹配的数量:

use strict;
use warnings;

my $cmd_data = "test command: {1} {2} {3}";

print scalar(() = $cmd_data =~ m/{(\d+)}/g);

输出

3

如果您之前的问题是指南,我怀疑这是XY Problem