正規表現を使用してこの文字列を抽出する方法
||03/15/2012||10:17:11|FOR TEST
「2012/03/15」を抽出したい。このコマンドを試しました
my $firstLine =~ m/^\|\|\d{2}\/\d{2}\/\d{4}\|\|/i ;
trace("first line extraction : $firstLine first $1");
うまくいきません。助けていただけますか?
ありがとう
()
抽出する部分の周りにキャプチャ グループを使用する必要があります。
my $line = '||03/15/2012||10:17:11|FOR TEST';
if ($line =~ m/^\|\|(\d{2}\/\d{2}\/\d{4})\|\|/i) {
# Capturing group ┴───────────────────┘
print("Group 1: $1\n"); # 03/15/2012
}
次のように、キャプチャ グループの値を直接割り当てることができます。
my $in = "||03/15/2012||10:17:11|FOR TEST";
(my $Date) = $in =~ /^\|\|(\d{2}\/\d{2}\/\d{4})\|\|/;
キャプチャ グループ 1 の結果は にあり$Date
ます。
ところで。modifier は必要ありませんi
。正規表現に文字がないため、大文字と小文字が区別されないため、このオプションは役に立ちません。
スクリプト:
my $firstLine = '||03/15/2012||10:17:11|FOR TEST';
print $1 if $firstLine =~ /(\d{2}\/\d{2}\/\d{4})/;
出力:
03/15/2012
ここでこのコードをテストします:http://ideone.com/99iUg
試す:my $firstLine =~m/^\|\|(.+)\|\|.*$/i
最初の 2 組の二重パイプの間に何があるかだけを本当に気にします。