Sto cercando un'espressione regolare per trovare gruppi di acquisizione denominati in stringhe di regex (altre).Regex per trovare gruppi di acquisizione denominati con il linguaggio di programmazione Go
Esempio: Voglio trovare (?P<country>m((a|b).+)n)
, (?P<city>.+)
e (?P<street>(5|6)\. .+)
nel seguente espressione regolare:
/(?P<country>m((a|b).+)n)/(?P<city>.+)/(?P<street>(5|6)\. .+)
ho provato la seguente espressione regolare per trovare i gruppi di cattura denominati:
var subGroups string = `(\(.+\))*?`
var prefixedSubGroups string = `.+` + subGroups
var postfixedSubGroups string = subGroups + `.+`
var surroundedSubGroups string = `.+` + subGroups + `.+`
var capturingGroupNameRegex *regexp.RichRegexp = regexp.MustCompile(
`(?U)` +
`\(\?P<.+>` +
`(` + prefixedSubGroups + `|` + postfixedSubGroups + `|` + surroundedSubGroups + `)` +
`\)`)
?U
rende quantificatori greedy (+
e *
) quantificatori non avidi e non grezzi (*?
) avidi. Dettagli nello Go regex documentation.
Ma non funziona perché le parentesi non corrispondono correttamente.
Giusto per chiarire: il pacchetto Go "regexp" _non utilizza la libreria RE2. – zzzz
Lo fa - basta seguire il link – mvp
OK, in realtà non usa quella libreria, ma accetta la stessa sintassi. –