例如,
说字符串是“-u xyz -p 1234 -z ask -p secure -o all -p demo”
我想匹配所有出现的 -p 并获取它的值,
我试过了,但它只在第一场比赛中停止,
$command =~ /(.*)\-p\s+(.*?)\s+(.*)/g; 打印 $2
这将导致
1234
任何想法,我怎样才能重现它并获得所有值:1234,安全,演示
看起来您正在尝试解析命令行选项。如果是这样,请使用 Perl 附带的标准 Getopt::Long 模块。
http://perldoc.perl.org/Getopt/Long.html
无需重新发明轮子。
这将适用于示例:
$command = "-u xyz -p 1234 -z ask -p secure -o all -p demo";
while($command =~ /\-p ([^ ]+)/g) {
print "$1\n";
}
结果:
1234
secure
demo