2011-06-22 28 views

Trả lời

13

Bạn có thể làm một cái gì đó giống như một VÀ sử dụng aheads cái nhìn tích cực

(?=.*cat)(?=.*dog).* 

Xem nó here on Rubularlink cập nhật!

Dò tìm tích cực này (?=.*cat) kiểm tra xem có "mèo" ở đâu đó trong chuỗi không, sau đó tương tự được thực hiện cho "chú chó" sử dụng (?=.*dog). Nếu cả hai xác nhận này đều đúng thì chuỗi hoàn chỉnh được kết hợp với số .* ở cuối.

Ưu điểm là nó cũng sẽ phù hợp

chó và mèo

và không chỉ

mèo và chó

nhưng nó cũng sẽ phù hợp

chó và mèo

nếu bạn muốn kết hợp chính xác, sau đó sử dụng này

(?=.*\bcat\b)(?=.*\bdog\b).* 

\b là một ranh giới từ, tức là nó phù hợp giữa một từ và một nhân vật từ phi.

Xem nó here

0

và là hành động mặc định trong một regexp, ví dụ trận đấu đầu tiên này sau đó theo sau đó và vân vân.

để phù hợp với mèo và chó, sử dụng giống như

cat.*dog 

điều đó có nghĩa, phù hợp với "mèo" theo sau bởi bất cứ điều gì và sau đó tiếp theo là "con chó". Nhưng sau đó một lần nữa tôi có thể đã hiểu lầm câu hỏi của bạn ...

0

Nó phụ thuộc vào những gì bạn muốn.

Bạn có thể sử dụng thẻ hoang dã

cat.+dog 

Hoặc

cat.+dog|dog.+cat 

Hoặc

cat +and +dog 
2

Câu hỏi của bạn không phải là rất rõ ràng.

Nếu bạn muốn để phù hợp với chỉ những chuỗi có chứa cả "mèo" "chó" (có thể như các bộ phận của một từ), bạn có thể làm:

/^.*(cat.*dog|dog.*cat).*$/ 

Các regex trên sẽ phù hợp với "giáo điều nối", nhưng không phải là "nối".

Nếu bạn muốn đảm bảo rằng "mèo" và "chó" xuất hiện như lời tự, làm:

/^.*(\bcat\b.*\bdog\b|\bdog\b.*\bcat\b).*$/ 

Các regex trên sẽ phù hợp với "con mèo và con chó", nhưng không phải là "nối giáo điều" hay "cat dogma".

Nguồn: http://ruby-doc.org/docs/ProgrammingRuby/html/intro.html#S5

0

Không có and nhà điều hành trong Regexp s, đơn giản chỉ vì nó không có ý nghĩa. Nó sẽ không bao giờ phù hợp với: cách có thể là String cả hai là 'cat''dog' cùng một lúc?

+1

'schrodinger.pet.species.to_s' –

+0

Tất nhiên, một chuỗi có thể là cả" con mèo "và" con chó "cùng một lúc -' "một con mèo và một con chó có cùng chuỗi" '. – jeffdill2

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