/ / Existe-t-il un moyen de faire correspondre le nième personnage? [dupliquer] - regex, perl

Y a-t-il un moyen possible de faire correspondre le nième personnage? [duplicate] - regex, perl

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 № 1

Utilisation limiteur de répétition

/(?:[^-]+-){5}([^-]+)-/

Visualisation d'expression régulière

Explication Regex ici.


Le groupe de capture peut être dans le groupe répétitif, seul le dernier est capturé.

/(?:([^-]+)-){6}/

Visualisation d'expression régulière

Explication Regex ici.