次のコードがあります。
#!/usr/bin/perl
use warnings;
use strict;
my $SourceStr='Foo - Name: Rob Time: 11/2/2011 13:47:30 State: Prelim 3 Optional: Some stuff here';
#my $SourceStr='Foo - Name: Rob Time: 11/2/2011 13:47:30 State: Prelim 3';
my $RegEx = qr/Name: (.+) Time: (.+) State: (.+) Optional: (.+?)( |$)/;
if ($SourceStr =~ m/$RegEx/) {
print "1=[$1]\n";
print "2=[$2]\n";
print "3=[$3]\n";
print "4=[$4]\n";
}
最初の $SourceStr で実行すると、期待どおりに動作します。ただし、コメント アウトされている 2 番目の場合、$4 に空の文字列を入力する方法はありますか?
最初の文字列の結果:
1=[Rob]
2=[11/2/2011 1:47:30 PM]
3=[3]
4=[Some stuff here]
2 番目の文字列の結果: 一致しません
欲しい:
1=[Rob]
2=[11/2/2011 1:47:30 PM]
3=[3]
4=[]