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