Poszukuję wyrażeń regularnych, aby znaleźć nazwane grupy przechwytujące w (innych) ciągach regex.Regex, aby znaleźć nazwane grupy przechwytujące z językiem programowania Go
Przykład: Chcę znaleźć (?P<country>m((a|b).+)n)
, (?P<city>.+)
i (?P<street>(5|6)\. .+)
w następującym regex:
/(?P<country>m((a|b).+)n)/(?P<city>.+)/(?P<street>(5|6)\. .+)
Próbowałem następujące regex znaleźć nazwanych grup przechwytywania:
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
sprawia chciwych kwantyfikatorów (+
i *
) chciwych kwantyfikatorów bez chciwości i nie chciwych (*?
) chciwych. Szczegóły w Go regex documentation.
Ale to nie działa, ponieważ nawiasy nie są poprawnie dopasowane.
Aby wyjaśnić: pakiet Go "regexp" _nie używaj_ biblioteki RE2. – zzzz
To działa - po prostu podążaj za odnośnikiem – mvp
OK, to w rzeczywistości nie korzysta z tej biblioteki, ale akceptuje tę samą składnię. –