perlでregexを使用してn番目の数字または文字を検索したいと思います。例えばPerlでREGEXを使用して文字列のn番目の文字または数字を見つける方法
:文字列の場合:
$string = 'abdg2jj4jdh5jfj6'
私は3桁目での桁5と一致する必要があります。
正規表現でどうすればいいですか?
perlでregexを使用してn番目の数字または文字を検索したいと思います。例えばPerlでREGEXを使用して文字列のn番目の文字または数字を見つける方法
:文字列の場合:
$string = 'abdg2jj4jdh5jfj6'
私は3桁目での桁5と一致する必要があります。
正規表現でどうすればいいですか?
my $string = "abdg2jj4jdh5jfj6";
my @myArray = ($string =~ /(\d)/g);
print "$myArray[2]\n";
出力:
ブライアンRoachs応答する代わりに、この
$string =~ /^\D*\d\D*\d\D*(\d)/;
print $1;
のようなキャプチャグループを使用することですが開始から試合を意味し、文字列0以上の非数字(\D
)、数字(\d
)、同じものをもう一度入力し、括弧内の数字を入力すると、$1
に格納されます。
しかし、より長い正規表現が必要なので、私は彼の解(+1)を好むでしょう。
my $k = 2; # one less than N
my ($digit) = $string =~ /(?:\d.*?){$k}(\d)/;
「正規表現は必要ありません」と言えるのですか?
substr()
とすることができます。
文字列中のn番目の数字*を探したかったのです。それは「5」が「3桁目」である方法です。あなたは 'substr() 'でそれをすることはできません –
ああ、ごめんなさい。私はそれを正しく読まなかった、あなたは正しい。 – AmbroseChapel
ありがとうブライアン、それは動作します。 – kailash19
移行変数がない: 'my $ nth =($ string =〜/(d)/ g)[2]' – TLP
@TLP - うん - 私はそこに行くつもりだったが、起こっていたこと。また、後で任意の数字を取得するために正規表現を一度だけ実行する必要があるという利点もあります。 –