/ / RegEx Catturare schemi a ripetizione indefinita con specifici riferimenti indietro? - regex, textwrangler, trova-sostituisci

RegEx Catturare pattern ripetuti indefinitamente con backreferenze specifiche? - regex, textwrangler, find-replace

Sto cercando di trovare una buona regex da utilizzare con TextWrangler per analizzare le descrizioni delle attività in un formato Rememberthemilk.com: in modo che una riga come:

Example task section 1 section tomorrow section tagone tagtwo tagthree tagfour

convertire in formato RTM:

Example task !1 ^tomorrow #tagone #tagtwo #tagthree #tagfour

Ora questo mi porta alla domanda di, come si fa a catturare uno schema a ripetizione indefinita usando la sintassi giusta nei riferimenti indietro?

Ho provato questo regex:

^([w ]+) section (d) section (w+) section ((w+) )+$

che sembra catturare il formato del testo di input, ma non so come fare la conversione nei riferimenti indietro?

1 !2 ^3 #(???)

Come ottengo questo?

risposte:

0 per risposta № 1

Cattura costrutti quantificati, non quantificare i gruppi di cattura.

qui usiamo anche parentesi "solo raggruppamento" (nessun gruppo di acquisizione) nella sezione interna e catturiamo l'esterno per ottenere un risultato chiaro:

([w ]+) section (d) section (w+) section ((?:w+s?)+)

vuoi la costante ripetuta dentro la cattura (), non ha senso "ripetere il gruppo", inla maggior parte dei motori verrà catturato solo l'ultimo risultato associato al gruppo. (sebbene alcuni motori regex consentano a un gruppo di acquisizione ripetuto di ricordare tutte le sotto-partite (ad esempio .NET))

demo: https://regex101.com/r/y3CryR/2