Tôi hiện đang cố gắng rexp một chuỗi thành nhiều biến. Ví dụ chuỗi:
So khớp nhóm Ruby Regexp, gán các biến trên 1 dòng
ryan_string = "RyanOnRails: This is a test"
Tôi đã phù hợp nó với regexp này, với 3 nhóm:
ryan_group = ryan_string.scan(/(^.*)(:)(.*)/i)
Bây giờ để truy cập mỗi nhóm tôi phải làm một cái gì đó như thế này:
ryan_group[0][0] (first group) RyanOnRails
ryan_group[0][1] (second group) :
ryan_group[0][2] (third group) This is a test
Điều này có vẻ khá vô lý và cảm thấy như tôi đang làm điều gì đó sai. Tôi hy vọng sẽ có thể làm được điều gì đó như thế này:
g1, g2, g3 = ryan_string.scan(/(^.*)(:)(.*)/i)
Điều này có thể? Hoặc là có một cách tốt hơn so với cách tôi đang làm nó?
Hãy coi chừng rằng nếu không tìm thấy kết quả phù hợp nào, kết quả trả về không có và bạn nhận được một NilError. Nếu bạn đang ở trong Rails, tôi đề nghị bạn thay đổi: 'một, hai, ba = string.match (/(^.*)(:)(.*)/ i) .captures' vào: 'một, hai, ba = string.match (/(^.*)(:)(.*)/ i) .try (: captures)' –
@AndreaSalicetti Tôi đã chỉnh sửa bài đăng của mình, tôi không thêm Rails-mã cụ thể vào nó vì vậy tôi đã thay đổi nó với một phiên bản để xử lý các đối tượng nil trả về –
Sạch sẽ và gọn gàng, tất cả các quyền! –