例えば、
文字列は「-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