Estou tentando encontrar um bom regex para usar com o TextWrangler para analisar as descrições de tarefas em um formato Rememberthemilk.com: para que uma linha como:
Example task section 1 section tomorrow section tagone tagtwo tagthree tagfour
converter no formato RTM:
Example task !1 ^tomorrow #tagone #tagtwo #tagthree #tagfour
Agora, isso me leva à questão de como você captura um padrão de repetição indefinida usando a sintaxe correta nas referências anteriores?
Eu tenho tentado este regex:
^([w ]+) section (d) section (w+) section ((w+) )+$
que parece capturar o formato do texto de entrada, mas eu simplesmente não sei como fazer a conversão nas referências anteriores?
1 !2 ^3 #(???)
Como faço para conseguir isso?
Respostas:
0 para resposta № 1Capture construções quantificadas, não quantifique grupos de captura.
aqui também usamos parens "agrupamento apenas" (sem grupo de captura) na seção interna e capturamos a parte externa para obter um resultado limpo:
([w ]+) section (d) section (w+) section ((?:w+s?)+)
você quer a repetida construção dentro a captura ()
, não faz sentido "repetir o grupo", emna maioria dos mecanismos, apenas o último resultado do grupo correspondente será capturado. (embora alguns mecanismos regex permitam que um grupo de capturas repetidas lembre de todas as correspondências secundárias (.NET por exemplo))
demo: https://regex101.com/r/y3CryR/2