Tôi đang tìm một regex để tìm các nhóm chụp có tên trong các chuỗi regex (khác).Regex để tìm các nhóm chụp có tên bằng ngôn ngữ lập trình Go
Ví dụ: Tôi muốn tìm (?P<country>m((a|b).+)n)
, (?P<city>.+)
và (?P<street>(5|6)\. .+)
trong regex sau:
/(?P<country>m((a|b).+)n)/(?P<city>.+)/(?P<street>(5|6)\. .+)
Tôi đã thử các regex sau đây để tìm ra nhóm bắt tên:
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
làm quantifiers tham lam (+
và *
) số lượng không tham lam và không tham lam (*?
) tham lam. Chi tiết trong số Go regex documentation.
Nhưng nó không hoạt động vì dấu ngoặc đơn không khớp chính xác.
Chỉ cần làm rõ: gói "regexp" Go _không được sử dụng_ thư viện RE2. – zzzz
Nó - chỉ cần theo liên kết – mvp
OK, nó không thực sự sử dụng thư viện đó, nhưng nó chấp nhận cùng một cú pháp. –