Mes données d'entrée comme ci-dessous. Je veux regrouper le mot entre la 6ème et la 7ème position du -
.
my $sa = "a1a1a1-b1b1b1-c-ddd-eee-fff-gggggg-hHhH-iiii-j-KKKKK";
Pour cela, la regex réelle était
/[^-]+-[^-]+-[^-]+-[^-]+-[^-]+-([^-]+)-/
Pour construire la regex, j'ai essayé comme ci-dessous,
my $avc = "[^-]+-" x 5 . "([^-]+)-";
my $ar = qr"$avc";
$sa =~m/$ar/g;
print $1;
Mon doute, existe-t-il des options pour regex? Sans utiliser x
. Comment puis-je le faire dans une seule expression régulière?
Réponses:
7 pour la réponse № 1Utilisation limiteur de répétition
/(?:[^-]+-){5}([^-]+)-/
Le groupe de capture peut être dans le groupe répétitif, seul le dernier est capturé.
/(?:([^-]+)-){6}/