[英]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.