Как найти n-ый символ или цифру в строке, используя REGEX в Perl - PullRequest
4 голосов
/ 20 февраля 2012

Я хотел бы найти n-й случай появления цифры или символа с использованием регулярного выражения в perl.

Например: если строка:

$string = 'abdg2jj4jdh5jfj6'

, мне нужно сопоставить цифру 5которая является третьей цифрой.

Как я могу сделать это с помощью регулярного выражения.

Ответы [ 4 ]

11 голосов
/ 20 февраля 2012
my $string = "abdg2jj4jdh5jfj6";
my @myArray = ($string =~ /(\d)/g);
print "$myArray[2]\n";

Выход:

5

3 голосов
/ 20 февраля 2012

Альтернативой ответу Брайана Роучса будет использование группы захвата, подобной этой:

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

означает совпадение с начала строки 0 или более не цифр (\D), а затем цифру (\d), снова то же самое, а затем цифра, которую вы хотите иметь в скобках, чтобы она сохранялась в $1.

Но вам нужно более длинное регулярное выражение, поэтому я бы предпочел его решение (+1).

1 голос
/ 20 февраля 2012
my $k = 2; # one less than N
my ($digit) = $string =~ /(?:\d.*?){$k}(\d)/;
0 голосов
/ 20 февраля 2012

Могу ли я сказать "вам не нужно регулярное выражение"?

Вы можете сделать это с помощью substr().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...