/ / Czy jest jakiś możliwy sposób na dopasowanie n-tego znaku? [duplikat] - regex, perl

Czy jest jakikolwiek sposób na dopasowanie n-tej postaci? [duplicate] - regex, perl

Moje dane wejściowe jak poniżej. Chcę pogrupować słowo między szóstą a siódmą pozycją -.

my $sa = "a1a1a1-b1b1b1-c-ddd-eee-fff-gggggg-hHhH-iiii-j-KKKKK";

W tym celu prawdziwym wyrażeniem regularnym było

/[^-]+-[^-]+-[^-]+-[^-]+-[^-]+-([^-]+)-/

Aby zbudować regex, próbowałem jak poniżej,

my $avc = "[^-]+-" x 5 . "([^-]+)-";

my $ar = qr"$avc";

$sa =~m/$ar/g;

print $1;

Moje wątpliwości, czy są jakieś opcje dostępne w ramach regex. Bez używania x. Jak mogę to zrobić w pojedynczym wyrażeniu regularnym?

Odpowiedzi:

7 dla odpowiedzi № 1

Posługiwać się ograniczający kwantyfikator powtórzeń

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

Wizualizacja wyrażenia regularnego

Wyjaśnienie Regex tutaj.


Grupa przechwytująca może znajdować się w grupie powtarzalnej, tylko ta ostatnia zostanie przechwycona.

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

Wizualizacja wyrażenia regularnego

Wyjaśnienie Regex tutaj.