2010-08-03 35 views
12

Tôi đang tìm kiếm tất cả các thẻ đầu vào HTML có loại 'văn bản' bên trong Netbeans 6.9.Tìm kiếm biểu thức chính quy nhiều dòng Netbeans Tìm kiếm

Netbeans có hỗ trợ tìm kiếm chuỗi bằng cách sử dụng cụm từ thông dụng với các tiêu chí tìm kiếm khác nhau trải rộng trên nhiều dòng hay không chỉ hoạt động trong một dòng?

này biểu hiện thường xuyên

<input.*type=['"]text['"].*/> 

công trình khi toàn bộ thẻ và các thuộc tính của nó được viết bằng một dòng như thế này

<input name="data[something]" id="some_id" value="some_value" type="text" /> 

Nhưng vì tôi tránh viết dài dòng mã và phá vỡ chúng như chẳng hạn

<input name="data[something]" id="some_id" 
     value="some_value" type="text" /> 

cùng một cụm từ thông dụng không hoạt động.

Có cách nào để đạt được điều này không?

Trả lời

20

Theo mặc định, các vi khuẩn metacharacter . không khớp với dòng mới. Nên có một tùy chọn có tên là "Một dòng" hoặc "DOTALL" hoặc tương tự, cho phép dấu chấm khớp với mỗi ký tự. Hoặc bạn có thể thêm (?s) vào đầu regex và nhận được hiệu ứng tương tự cho chỉ regex đó.

Nhưng sẽ tốt hơn nếu thay thế .* bằng [^<>]*. Ở chế độ DOTALL, .* sẽ cố gắng gobble toàn bộ phần còn lại của tài liệu, dẫn đến hiệu suất chậm và/hoặc kết quả phù hợp không chính xác, nhưng [^<>]* sẽ không bao giờ cố gắng khớp với phần cuối của thẻ.

Nhân tiện, nếu bạn đang sử dụng ['|"] để khớp với dấu nháy đơn hoặc báo giá kép, hãy loại bỏ số |. "OR" được ngụ ý trong một lớp nhân vật, vì vậy bạn chỉ cần ['"] (số | đơn giản sẽ khớp với một chữ số |).

+0

Tôi có vấn đề tương tự và câu trả lời của bạn đã giúp tôi. Nhưng một vấn đề khác xuất hiện - regex của tôi vẫn tham lam. Tôi có thể đọc thêm về công cụ "(? S) ở đầu" ở đâu? Tôi có thể làm cho regex của tôi không tham lam với điều đó? Cảm ơn! – Hnatt

+4

Đừng bận tâm, tôi đã tìm thấy nó. '(. *)' - tham lam, '(. *?)' - không tham lam. – Hnatt

+0

(? S) đã giúp tìm kiếm các kết quả phù hợp. (Dấu chấm) bao gồm dòng mới, cảm ơn bạn rất nhiều! – user219628

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