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 に答える