2012-04-17 29 views
5

Tôi đang cố gắng khớp nhóm trong regex nhưng tôi không muốn nhóm này nằm trong kết quả cuối cùng.Kết hợp nhưng không đưa vào kết quả bằng cách sử dụng regex

Ví dụ:

((kl(\.)?|at)?([0-1][0-9]|2[0-3]):[0-5][0-9](:[0-5][0-9])?)

Chạy biểu thức trên vào at 12:25 nên trở 12:25.

Có cách nào để thực hiện việc này không?

tôi đã cố gắng sử dụng:

(?:((kl(\.)?|at)?)([0-1][0-9]|2[0-3]):[0-5][0-9](:[0-5][0-9])?)

Nhưng điều đó không có gì khác biệt.

Sau đó, tôi đã cố gắng

(?<!(?:((kl(\.)?|at)?)([0-1][0-9]|2[0-3]):[0-5][0-9](:[0-5][0-9])?)

Nhưng đó quay trở lại một kết quả có sản phẩm nào.

Tôi đang sử dụng cụm từ trong C#.

+0

'(?: ...)' - nhóm không chụp – kirilloid

+0

Điều đó trả về toàn bộ kết quả. Ví dụ. 'tại 12: 25' tương tự' (?: ...) ' – simonbs

Trả lời

9

Nhóm không chụp (không được tìm thấy trong nhóm đối sánh) được ký hiệu là (? :). Vì vậy,

(?:(?:kl(?:\.)?|at)?([0-1][0-9]|2[0-3]):[0-5][0-9](:[0-5][0-9])?) 

Nhưng regexp của bạn dường như được cấu trúc sai từ đầu. Bạn không nắm bắt được phút.

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