Tôi đang chuyển một thư viện từ Ruby sang Go và vừa phát hiện ra rằng các biểu thức chính quy trong Ruby không tương thích với Go (google RE2). Tôi chú ý rằng Ruby & Java (cộng với các ngôn ngữ khác sử dụng biểu thức thông thường PCRE (tương thích perl, hỗ trợ chụp nhóm)), vì vậy tôi cần phải viết lại các biểu thức để biên dịch ok trong Go.Cách nhận chức năng nhóm trong các biểu thức chính quy của Golang?
Ví dụ, tôi có regex sau:
`(?<Year>\d{4})-(?<Month>\d{2})-(?<Day>\d{2})`
này nên chấp nhận đầu vào như:
2001-01-20
Các nhóm chụp cho phép năm, tháng và ngày để được chụp vào các biến. Để có được giá trị của mỗi nhóm, nó rất dễ dàng; bạn chỉ cần chỉ mục vào dữ liệu phù hợp được trả lại với tên nhóm và bạn nhận được giá trị trở lại. Vì vậy, ví dụ để có được năm, một cái gì đó giống như mã giả này:
m=expression.Match("2001-01-20")
year = m["Year"]
Đây là một mẫu tôi sử dụng rất nhiều trong biểu thức của tôi, vì vậy tôi có rất nhiều viết lại để làm.
Vì vậy, có cách nào để có được loại chức năng này trong Go regexp hay không; làm thế nào tôi nên viết lại những biểu thức này?
Ok tuyệt vời mà trông đáng khích lệ , nhưng làm cách nào để tôi có quyền truy cập vào các giá trị, năm, tháng và ngày riêng lẻ? – Zephilim
Quên nhận xét cuối cùng, tôi chỉ tìm thấy câu trả lời đó. Tất cả của nó trong? P, như bạn nói :) – Zephilim
Tôi vẫn còn bối rối bởi điều này; Tôi không chắc họ có thể định địa chỉ theo Năm, Tháng, v.v.Tôi lấy lại một mảng với bốn giá trị và có thể lập chỉ mục vào nó, nhưng đó là nó. –