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