2010-12-03 44 views
9

Vì vậy, chuỗi của tôi trông như thế này:Làm thế nào để kết hợp mọi thứ với sự xuất hiện thứ hai của một nhân vật?

Basic information, advanced information, super information, no information 

Tôi muốn chụp tất cả mọi thứ lên đến dấu phẩy thứ hai vì vậy tôi nhận được:

thông tin cơ bản, thông tin tiên tiến

Điều gì sẽ là regex cho rằng ?

tôi đã cố gắng: (.*,.*), nhưng tôi nhận

thông tin cơ bản, thông tin tiên tiến, siêu thông tin,

+0

tối đa và bao gồm, hoặc tối đa nhưng không bao gồm? –

Trả lời

13

này sẽ chụp lên đến nhưng không bao gồm dấu phẩy thứ hai: dịch

[^,]*,[^,]* 

tiếng Anh:

  • [^,]* = càng nhiều ký tự không dấu phẩy càng tốt

  • , = dấu phẩy

  • [^,]* = càng nhiều ký tự không dấu phẩy càng tốt

[...] là một lớp nhân vật. [abc] có nghĩa là "a hoặc b hoặc c" và [^abc] có nghĩa là bất cứ điều gì trừ a hoặc b hoặc c.

+0

@skajfes: vâng, tôi đã thử nghiệm (và phần trước). –

+0

Xin lỗi, tôi đã nhanh chóng kích hoạt nó ở đó. Tôi đã loại bỏ các downvote. – skajfes

+0

@skajfes: cảm ơn. Cái cũ là không cần thiết phức tạp - Tôi không chắc tại sao tôi lại sử dụng một khẳng định tiêu cực cho nửa thứ hai khi một lớp nhân vật tiêu cực cũ cũng hoạt động tốt ở đây. –

3

Bạn có thể thử ^(.*?,.*?), Vấn đề là .* là tham lam và phù hợp với số tiền tối đa của nhân vật. Các ? đằng sau * thay đổi hành vi thành không tham lam.

Bạn cũng có thể đặt dấu ngoặc đơn xung quanh mỗi. *? phân đoạn để nắm bắt các chuỗi riêng biệt nếu bạn muốn.

+0

Hầu hết các công trình, được tôi: Thông tin cơ bản, thông tin nâng cao, (dấu phẩy ở cuối) – Micor

+1

Điều này cũng khớp với dấu phẩy thứ hai. Không rõ câu hỏi liệu có ổn hay không - anh ta nói anh ta muốn "Thông tin cơ bản, thông tin nâng cao" nhưng có lẽ anh ta có nghĩa là bị bắt bởi nhóm chụp, không bị bắt bởi toàn bộ regex. –

+0

Bạn có dấu ngoặc đơn sẽ chụp tất cả mọi thứ trừ dấu phẩy ở cuối. – skajfes

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