私はstats gitリポジトリのプログラムを作っていますが、特定の正規表現を動作させるのに問題があります。正規表現を使ってPerlの行を解析する
my $string = "5 2 gitc"
とこのようになります正規表現を::基本的に、私はこのようになります文字列を持っている私の目標は、追加$として第1の数と第2の数などを格納することです
my ($added, $removed) = $string =~ /([0-9]*) *([0-9]*) *[a-z]*/;
$が削除されましたが、何らかの理由で$ removedに値が格納されていません。だから私はprint文を使用する場合:
print "-$added $removed-\n";
を出力は次のようになります。私は正規表現101上の正規表現は、私のキャプチャグループは、正常に動作するように見えることをテストするとき
-5 -
ので、私は一種の困惑しますなぜそれがうまくいかないのかについて。私の正規表現に誰かが問題を見ることができますか?カイルはコメントで指摘したように
がタブ文字可能性がありますか?これら2つの行をローカルに実行すると($ stringにスペース文字が確保されます)、それは動作します。すなわち、私は「-5 2」を得る – Marty
数字はオプションか、間違いなくそこにあるはずですか?それらが常に存在する必要がある場合は、 '/'の代わりに '/'を使用してみてください: '/([0-9] +)+([0-9] +)+ [a-z] + /' '+'とマッチする可能性のある方法は少なくなります。 –
@Marty、それは本当に良いアイデアです。私の提案を改訂する:/([0-9] +)[\ t] +([0-9] +)[\ t] + [az] +/' –