Moje vstupné údaje sú uvedené nižšie. Chcem zoskupiť slovo medzi 6. \ Ta 7. \ T -
.
my $sa = "a1a1a1-b1b1b1-c-ddd-eee-fff-gggggg-hHhH-iiii-j-KKKKK";
Na to bol skutočný regex
/[^-]+-[^-]+-[^-]+-[^-]+-[^-]+-([^-]+)-/
Na vybudovanie regexu som sa snažil, ako je uvedené nižšie,
my $avc = "[^-]+-" x 5 . "([^-]+)-";
my $ar = qr"$avc";
$sa =~m/$ar/g;
print $1;
Moja pochybnosť, existujú nejaké možnosti sú k dispozícii v rámci regex. Bez použitia x
, Ako to môžem urobiť v jednom regexe?
odpovede:
7 pre odpoveď č. 1použitie limitujúci kvantifikátor opakovania
/(?:[^-]+-){5}([^-]+)-/
Zachytávacia skupina sa môže nachádzať v rámci opakujúcej sa skupiny.
/(?:([^-]+)-){6}/