2012-11-13 32 views
15

Giả sử tôi muốn một regex khớp với "Nhảy qua cầu FOOL" này cũng như "Nhảy qua cây cầu này". Làm cách nào để tạo tùy chọn "FOOL" (0 hoặc 1 lần xuất hiện)?Regex để phù hợp với 1 hoặc ít hơn sự xuất hiện của chuỗi?

+11

tôi không hiểu tại sao mọi người downvoted này. Chắc chắn nó trong một hướng dẫn ... nhưng thực tế đơn giản là hướng dẫn sử dụng API thường SUCK, và ngăn xếp exch. đã trở thành trang web truy cập cho các câu trả lời đơn giản được kiểm duyệt một câu hỏi mà không có tài liệu API hoặc mười lăm trang blog crappy. Tôi đã theo dõi liên kết này bởi vì tôi đã quên mất cách thức và cần một câu trả lời đơn giản mà không tốn nửa giờ đọc qua một cuốn sổ tay crappy chỉ để tìm một cái gì đó đơn giản. Người kiểm duyệt ở đây phải nhận ra rằng StackExchange đã trở thành một PRODUCT mà mọi người QUAN TRỌNG. Các câu hỏi như thế này là CHÍNH XÁC trong S.E. định nghĩa sản phẩm. Sống với nó. –

Trả lời

12

You might want to have a look at a regex tutorial.

phần bắt buộc của một regex được biểu thị bằng dấu chấm hỏi:

Jump over this bridge(FOOL)? 

Trong trường hợp bạn muốn để phù hợp với bất kỳ chuỗi bao gồm FOOL ít hơn hai lần, mọi thứ trở nên một chút phức tạp hơn. Sau đó, bạn sẽ được giảm giá tốt nhất bằng cách sử dụng khái niệm tiên tiến hơn của một negative lookahead:

^(?!(.*FOOL){2}) 

này biến logic trên đầu của nó và khẳng định rằng chuỗi không chứa 2 (hoặc nhiều hơn) các trường hợp FOOL.

+0

-1, mỗi câu hỏi tràn ngăn xếp duy nhất có thể được trả lời bằng "Đọc hướng dẫn X", để nhận xét không có giá trị nào khác ngoài việc loại bỏ áp phích và không được bao gồm. Các liên kết ngoài đến các câu trả lời cũng được tán thành (câu trả lời phải nằm trong câu hỏi, như bạn đã làm) – pjcard

+0

@pjcard đã đồng ý. Tôi đã viết lại câu trả lời. –

+1

Cảm ơn bạn, tôi đã thay đổi nó cho +1. – pjcard

1

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

Jump over this bridge(FOOL)? 

Bạn có thể đặt một tập hợp các chuỗi quá:

Jump over this bridge(FOOL| FOOB)? 
10

Bạn có thể sử dụng dấu ? để chỉ định sự xuất hiện của nhóm là tùy chọn (xảy ra 0 hoặc 1 lần) hoặc bạn cũng có thể sử dụng dấu ngoặc nhọn với giá trị tối thiểu là 0 và 1, vì vậy câu trả lời là:

Jump over this bridge(FOOL)? 

hoặc

Jump over this bridge(FOOL){0,1} 
Các vấn đề liên quan