簡體   English   中英

如何在Perl中使用REGEX查找字符串中的第n個字符或數字

[英]How to find the nth character or digit in a string using REGEX in Perl

我想在perl中使用正則表達式找到數字或字符的第n個出現。

例如:如果字符串是:

$string = 'abdg2jj4jdh5jfj6'

我需要匹配第3位的數字5。

我怎么能用正則表達式做到這一點。

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

輸出:

Brian 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()來做。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM