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

时间:2012-02-20 07:30:00

标签: regex perl

我想在perl中使用正则表达式找到数字或字符的第n个出现。

例如:如果字符串是:

$string = 'abdg2jj4jdh5jfj6'

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

我怎样才能使用正则表达式。

4 个答案:

答案 0 :(得分:11)

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

输出:

  

5

答案 1 :(得分:3)

Brian Roachs回答的替代方案是使用像这样的捕获组

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

表示从字符串的开头匹配0个或更多个非数字(\D),然后是数字(\d),再次相同,然后是你想要在括号中的数字,所以它将存储在$1

但是你需要更长的正则表达式,所以我更喜欢他的解决方案(+1)。

答案 2 :(得分:1)

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

答案 3 :(得分:0)

我可以说“你不需要正则表达式”吗?

您可以使用substr()