2011-09-13 41 views
75

Tôi đang cố gắng phân tích cú pháp tài liệu có số tham chiếu rải rác trong đó.RegEx - Số trận đấu có độ dài thay đổi

Văn bản văn bản văn bản {4: 2} văn bản khó tin hơn {4: 3} sau này trên {222: 115} và một số văn bản khác.

Tham chiếu sẽ luôn được bao trong dấu ngoặc và sẽ luôn có dấu hai chấm giữa hai dấu ngoặc đơn. Tôi đã viết một biểu hiện để tìm chúng.

{[0-9]:[0-9]} 

Tuy nhiên, điều này rõ ràng không thành công khi bạn gặp một số có hai hoặc ba chữ số và tôi đang gặp khó khăn trong việc tìm ra điều cần làm. Sẽ không bao giờ có nhiều hơn 3 chữ số {999: 999} là kích thước tối đa để xử lý.

Bất kỳ ai có ý tưởng về biểu thức thích hợp để xử lý việc này?

+8

Ngay cả khi OP không quan tâm, tôi tò mò: Tại sao câu hỏi này lại có ý nghĩa? Tôi không thấy có vấn đề gì với nó cả. – John

+3

@John: Đối với một số lý do mọi người thích downvote câu hỏi, nơi có câu trả lời dễ dàng, đặc biệt là trong thẻ 'regex'. – CanSpice

+35

@xanatos - Vì vậy, câu hỏi SO chỉ dành cho những người đã có thẩm quyền trong chủ đề cụ thể mà họ yêu cầu? Thật là một kế hoạch tuyệt vời. –

Trả lời

82
{[0-9]+:[0-9]+} 

thử thêm cộng (es)

21

Hãy thử điều này:

{[0-9]{1,3}:[0-9]{1,3}} 

Các {1,3} có nghĩa là "trận đấu giữa 1 và 3 trong những nhân vật trước đó".

8

Bạn có thể chỉ định số lần bạn muốn mục trước khớp với bằng cách sử dụng {min,max}.

{[0-9]{1,3}:[0-9]{1,3}} 

Ngoài ra, bạn có thể sử dụng \d cho chữ số thay vì [0-9] cho hầu hết các hương vị regex:

{\d{1,3}:\d{1,3}} 

Bạn cũng có thể muốn xem xét việc thoát bên ngoài {}, chỉ để làm cho nó rõ ràng rằng họ không phải là một phần của định nghĩa lặp lại.

+2

Không vui lòng không làm điều đó với hầu hết các hương vị regex, trừ khi bạn yêu các chữ số không phải châu Âu: http://www.fileformat.info/info/unicode/category/Nd/list.htm – xanatos

48

Bạn đang sử dụng công cụ regex nào? Hầu hết trong số họ sẽ hỗ trợ các biểu thức sau đây:

\{\d+:\d+\} 

Các \d thực sự là viết tắt cho [0-9], nhưng phần quan trọng là việc bổ sung các + có nghĩa là "một hoặc nhiều".

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