2017-02-09 9 views
-5

値がValidation_File_2_3.45.2017.csvの文字列があります。最初の数字を取得するためのPerl正規表現

この場合、正規表現を使用して2番目の数字を抽出するにはどうすればよいですか?物事のカップル

($Filedigit)= ($Filename =~ m/^[0-9]/g); 

私は表現($Filedigit) = ($Filename =~ m/^[0-9]/g)を試してみましたが、それはコメントで

+4

何を試しましたか?数字と数字のエスケープ文字は何ですか?どのように正規表現の値をキャプチャしますか? – AntonH

+0

こんにちは私は式($ Filedigit)=($ Filename =〜m/^ [0-9]/g)を試しました。 –

+0

@ GauraviNaik:さて、あなたはそれを試して何が起こったのですか?なぜあなたは私たちがあなたに答えるために必要な情報を得ることをとても難しくしていますか? *あなたの質問を編集して情報を追加し、コメントに書き込まないでください。私は今度あなたのためにそれをしましたが、あなたはまだ何が問題なのかを知る必要があります。 – Borodin

答えて

0

を動作しませんでした、あなたはこれを試してみましたと述べました。 常には、特にキャプチャを試みるときにスクリプトを続行する前に、マッチが成功したことを確認する必要があります。次に、^は文字列の先頭から見て、すぐにグローバルに1桁の数字0-9を探します。これは、ファイル名が2_blah.csvの場合を除き、一致しません。しかし、実際には何もキャプチャしようとしていないので、一致した場合は$Filedigitがすべて1になります(一致したことを示す)。正規表現の

use warnings; 
use strict; 

my $str = 'Validation_File_2_3.45.2017.csv'; 

# confirm there's a match 

if (my ($num) = $str =~ /^.*?(\d+)/){ 
    print "$num\n"; 
} 
else { 
    print "no match\n"; 
} 

説明::だから

^ - start from beginning of string 
.*? - anything, non-greedy 
( - begin capture 
\d+ - any number of contiguous digit chars 
) - end capture 

、それは文字列の先頭から開始し、最初のセットの前に何かを捨てここ

は何をしたいんだ例連続した桁数を取得し、それらをキャプチャして変数に格納します。

perlreftutおよびperlreを参照してください。

関連する問題