2010-04-26 30 views
30

Tôi chưa thể tìm thấy bất kỳ điều gì trực tuyến về việc này. Có RegexOptions, nhưng nó không có Global là một trong các tùy chọn của nó. Danh sách công cụ sửa đổi nội tuyến cũng không đề cập đến kết hợp toàn cục..NET Regex có hỗ trợ kết hợp toàn cục không?

Tóm lại, tôi đã có một regex để phân tích cái gì đó như

--arga= "arg1" --argb ="arg2" 

vào lập luận riêng cặp tên/giá trị sử dụng regex này:

--(\\w+)\\s*=\\s*\"(\\w+)\"\\s* 

nhưng lớp .NET Regex doesn 't làm điều đó trên toàn cầu (lặp đi lặp lại). Vì vậy, để tôi có được điều này để làm việc, tôi sẽ phải làm một trận đấu, sau đó loại bỏ điều này từ chuỗi đối số, và lặp đi lặp lại cho đến khi tôi đã cạn kiệt tất cả các đối số.

Sẽ đẹp hơn khi chạy regex một lần và sau đó lặp lại các nhóm đối sánh để nhận cặp giá trị tên. Điều này có thể không? Tôi đang thiếu gì?

Trả lời

41

Bạn đang tìm kiếm Regex.Matches method (plural), trả về bộ sưu tập chứa tất cả các kết quả phù hợp trong chuỗi gốc.

+0

ugh ... cảm ơn! Tôi hoàn toàn bỏ lỡ điều đó. Tôi sẽ cho nó một shot ngay bây giờ. – Dave

+0

bạn có thể giới thiệu cách sạch nhất để nhận các cặp giá trị tên không? Khi tôi sử dụng Kết quả phù hợp, nó trả về hai nhóm: '--arga =" arg1 "' và '--argb =" arg2 "', nhưng tôi đã hy vọng cho các nhóm này, ** plus ** 'arga',' arg1', 'argb' và' arg2'. – Dave

+3

Kiểm tra thuộc tính 'Groups [1]' của từng đối tượng 'Match'. – SLaks

Các vấn đề liên quan