REGEX: Referências de back -referências recursivas - Para que serve?
-
25-09-2019 - |
Pergunta
Encontrei uma possibilidade interessante em muitos motores regex:
É possível colocar referência de back -referência dentro do grupo de captura e fazer referência a este grupo.
Por exemplo: (\1)
Minha pergunta: para quais padrões regex pode ser usado? Eu não consigo imaginar ...
Solução
Há um Explicação para o uso de referências aninhadas, que acho que demonstra claramente a utilidade marginal desse recurso.
Outras dicas
Eu tenho um longo esquema de YAML, que eu preciso/quero mudar disso:
columns:
id:
type: string(36)
fixed: true
unsigned: false
primary: true
autoincrement: false
descripcion:
type: string(45)
fixed: false
unsigned: false
primary: false
notnull: true
autoincrement: false
Para isso:
columns:
id: {type: string(36), fixed: true, unsigned: false, primary: true, autoincrement: false}
descripcion: {...}...
Nesse caso, preciso de um nível de recursão em backrefências, porque os nomes das colunas estão entre a descrição da coluna. Isso é adequado para cada linha, mas eu não posso colocar "{}" Around $ 1, eu acabaria com colchetes entre cada campo de descrição:
"\n^ ([^\n]+)"
Que tal isso (ignore o espaço em branco):
{ .* ( { .* \1 .* } ) .* }
Para combinar com o corpo de um método em c#/java/...