2012-02-20 8 views

答えて

11
my $string = "abdg2jj4jdh5jfj6"; 
my @myArray = ($string =~ /(\d)/g); 
print "$myArray[2]\n"; 

出力:

+0

ありがとうブライアン、それは動作します。 – kailash19

+3

移行変数がない: 'my $ nth =($ string =〜/(d)/ g)[2]' – TLP

+1

@TLP - うん - 私はそこに行くつもりだったが、起こっていたこと。また、後で任意の数字を取得するために正規表現を一度だけ実行する必要があるという利点もあります。 –

3

ブライアンRoachs応答する代わりに、この

$string =~ /^\D*\d\D*\d\D*(\d)/; 
print $1; 

のようなキャプチャグループを使用することですが開始から試合を意味し、文字列0以上の非数字(\D)、数字(\d)、同じものをもう一度入力し、括弧内の数字を入力すると、$1に格納されます。

しかし、より長い正規表現が必要なので、私は彼の解(+1)を好むでしょう。

1
my $k = 2; # one less than N 
my ($digit) = $string =~ /(?:\d.*?){$k}(\d)/; 
0

「正規表現は必要ありません」と言えるのですか?

substr()とすることができます。

+0

文字列中のn番目の数字*を探したかったのです。それは「5」が「3桁目」である方法です。あなたは 'substr() 'でそれをすることはできません –

+0

ああ、ごめんなさい。私はそれを正しく読まなかった、あなたは正しい。 – AmbroseChapel

関連する問題