2011-12-10 26 views
10

Tôi đang cố gắng tạo truy vấn đối sánh để chọn văn bản từ một chuỗi giữa hai từ. Tôi không thể tìm ra cách làm cho trường hợp tìm kiếm không nhạy cảm. Ví dụ xem xét các văn bản:ruby ​​string match ignore case

contents = "cat 
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec blandit feugiat mi, eu lacinia quam tincidunt eu. Donec eleifend adipiscing neque, in porta dolor vestibulum at. Curabitur id elit vitae nunc feugiat varius. Maecenas euismod euismod mi, eu blandit lectus. 
dog" 

mã ruby ​​để trả lại cho tôi mã Latin giữa các từ mèo và chó là

contents.match(/cat(.*)dog/m)[1].strip 

Tại thời điểm "trận đấu" của tôi truy vấn chỉ hoạt động nếu mèo và con chó là chữ thường nhưng tôi cần phải phục vụ cho nếu con mèo và con chó là chữ hoa hoặc chữ cái đầu tiên là chữ hoa.

Không hoàn toàn chắc chắn vị trí để gắn toán tử/i.

Trả lời

19

Next để "m":

contents.match(/cat(.*)dog/im)[1].strip 
+0

Tôi thậm chí không nghĩ rằng "m" đang làm bất cứ điều gì trong biểu thức này. "m" được sử dụng để làm cho '^' và '$' khớp với đầu/cuối của một dòng, chứ không phải là đầu/cuối của đầu vào. – d11wtq

+1

@ d11wtq - Tôi chỉ thử nó trong irb và có vẻ như tạo nên sự khác biệt. Tôi tin rằng nó cho phép. để khớp với dòng mới. –

+0

cảm ơn @coder_tim, đã không nhận ra nó đơn giản như vậy. – ekynox