Допустим, я хочу, чтобы соответствовать и захватить 5 целых чисел, разделенных одним или несколькими пробелами - пример ввода:Perl Regular Expression - Dynamic Спички
Я мог бы это сделать :
my $input = '1111 234 3333 456 7890';
if($input =~ /^\s*([0-9]+)\s+([0-9]+)\s+([0-9]+)\s+([0-9]+)\s+([0-9]+)/)
{
#$1 = '1111', $2 = '234', $3 = '3333', $4= '456', $5 = '7890'
}
Но я хочу сделать что-то вроде этого, чтобы регулярное выражение проще, а не повторять каждый раз INT 5 явно:
my $input = '1111 234 3333 456 7890';
if($input =~ /^((\s*[0-9]+){5})/)
{
#$1 = '1111 234 3333 456 7890';
#$2 = ' 7890'
#all other capture variables are undefined
}
Однако захваты, похоже, не работают.
Есть ли способ, которым я могу это сделать и все еще получать доступ к моим 5 захватам?
Еще лучше было бы неизвестное количество захватов:
my $input = '1111 234 3333 456 7890';
if($input =~ /^((\s*[0-9]+)+)/)
{
#foreach capture 1..N do something...
}
'мои = $ массиве @numbers вход = ~/\ d +/G'? – TLP
Вы ищете код, который займет всего 5 элементов ввода? Если это так, проверьте ответ ниже. –