/ / RegEx Capturando padrões de repetição indefinidamente com referências posteriores específicas? - regex, textwrangler, find-replace

RegEx Capturando indefinidamente padrões de repetição com referências anteriores específicas? - regex, textwrangler, localizar e substituir

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

Capture 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