我想在perl中使用正則表達式找到第n個數字或字符的出現。如何在Perl中使用REGEX在字符串中找到第n個字符或數字
例如:如果字符串是:
$string = 'abdg2jj4jdh5jfj6'
我需要相匹配的位5,它是在第三位。
我該怎麼做與正則表達式。
我想在perl中使用正則表達式找到第n個數字或字符的出現。如何在Perl中使用REGEX在字符串中找到第n個字符或數字
例如:如果字符串是:
$string = 'abdg2jj4jdh5jfj6'
我需要相匹配的位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()' – 2012-02-20 16:58:52
對不起。我沒有正確閱讀,你是對的。 – AmbroseChapel 2012-02-21 23:08:20
感謝Brian,它的工作原理。 – kailash19 2012-02-20 07:54:23
沒有過渡變量:'我的$ nth =($ string =〜/(\ d)/ g)[2]' – TLP 2012-02-20 08:02:45
@TLP - 是的 - 我打算去那裏,但我希望它更明顯發生了什麼事。它還具有隻需運行一次正則表達式即可獲得任何數字的好處。 – 2012-02-20 08:03:52