0

例如,

说字符串是“-u xyz -p 1234 -z ask -p secure -o all -p demo”

我想匹配所有出现的 -p 并获取它的值,

我试过了,但它只在第一场比赛中停止,

$command =~ /(.*)\-p\s+(.*?)\s+(.*)/g;
打印 $2

这将导致

1234

任何想法,我怎样才能重现它并获得所有值:1234,安全,演示

4

2 回答 2

1

看起来您正在尝试解析命令行选项。如果是这样,请使用 Perl 附带的标准 Getopt::Long 模块。

http://perldoc.perl.org/Getopt/Long.html

无需重新发明轮子。

于 2013-01-09T04:35:37.497 回答
0

这将适用于示例:

$command = "-u xyz -p 1234 -z ask -p secure -o all -p demo";

while($command =~ /\-p ([^ ]+)/g) {
  print "$1\n";
}

结果:

1234
secure
demo
于 2013-01-09T04:57:10.470 回答