Làm cách nào tôi có thể tìm kiếm các biểu thức thông thường trong các trang web bằng Google Chrome hoặc IE?


69

Làm cách nào tôi có thể tìm kiếm các biểu thức thông thường như 'foo | bar' trên các trang web bằng Google Chrome hoặc IE? Tôi biết phần mở rộng "Trình tìm kiếm biểu thức chính quy", nhưng nó không hoạt động với tôi. (Không có gì xảy ra khi tôi nhấn dấu gạch chéo.) Các đánh giá trên cửa hàng trực tuyến cho thấy đây là vấn đề phổ biến đối với nhiều người dùng.


1
Bạn không sử dụng Firefox, nhưng bạn có thể thấy một trong những tiện ích bổ sung của nó rất thú vị: deep web deepweb.com Nó không thực hiện REs, nhưng nó hỗ trợ tìm kiếm chi tiết hơn. Nếu bạn thực sự tuyệt vọng, bạn luôn có thể lưu nguồn của một trang web và sau đó tìm kiếm nó với một tiện ích hoặc trình chỉnh sửa hỗ trợ REs, nhưng điều đó sẽ khá xấu.
Joe

có thể sử dụng NotePad ++ làm trình chỉnh sửa bên ngoài cho các trang web. Ở đó bạn có thể tìm kiếm regexps.
alfred

Câu trả lời:


39

Sử dụng Javascript để khớp với các biểu thức thông thường

Có thể bạn muốn thử điều này tại bảng điều khiển của chrome:

var p=/.*(regu).+?\ /gi; console.log( document.body.innerText.match(p) );

Chỉ cần mở giao diện điều khiển , sao chép và dán ở trên để giao diện điều khiển và nhấn enter. Bạn có thể kiểm tra nó ở đây tại trang này.
Điều này có thể được cải thiện nếu nó phù hợp.

Ở đây chúng tôi in ra các chỉ mục khớp bảng điều khiển và văn bản phù hợp. Ở đây chúng tôi cố gắng khớp văn bản có chứa regu, 20 ký tự trước (hoặc ít hơn nếu bắt đầu dòng) và 10 ký tự sau (hoặc ít hơn nếu eol).

var p=/.{0,20}regu[^ \n]+[^\n]{0,10}/gi;
while (m = p.exec(document.body.innerText)) { 
    console.log( 'Index: '+m.index+' Match: '+m ); }

Cũng thử điều này, nó sẽ vẽ nền của tất cả các trận đấu trên trang màu đỏ , rexEx không hoàn hảo nhưng ít nhất nó không nên lộn xộn với các thẻ HTML:

var p=/(\>{1}[^\n\<]*?)([^\n\<]{0,30}regu[^\n\<]{0,10})/gi,b=document.body;
b.innerHTML=b.innerHTML.replace(p,'$1<span style="background-color:red;">$2</span>');

Đánh dấu trang này:

Một cách khác để sử dụng điều này là thông qua javascript:giao thức (cùng mã như ở trên):

javascript:(function(){var p=/(\>{1}[^\n\<]*?)([^\n\<]{0,30}regu[^\n\<]{0,10})/gi,b=document.body;b.innerHTML=b.innerHTML.replace(p,'$1<span style="background-color:red;">$2</span>');})();

Ví dụ: bằng cách sử dụng javascript:giao thức, người ta có thể chèn một hộp tìm kiếm nhỏ vào bất kỳ trang web nào để tìm kiếm của regrec.
Tôi nghĩ rằng bạn đã biết rằng regrec đơn giản cũng có thể được sử dụng để xóa các kết quả trùng khớp màu đỏ khỏi trang.
Nếu tôi tiếp tục phát triển điều này trong vài giờ nữa, chúng tôi có thể có plugin tìm kiếm phù hợp với dấu trang :)


1
Một số phiên bản trước của chrome không hỗ trợ innerText. Nên kiểm tra nếu innerTextđược hỗ trợ và mặc định textContentnếu innerTextkhông sử dụng được.
Spencer D

Mã ban đầu của bạn để tìm các yếu tố có thể bằng mã [...document.body.innerText.matchAll(p)]cho hơn 73 phiên bản Chrome.
Vadim Ovchinnikov

6

Tìm kiếm biểu thức thông thường từ Google Chrome.

Một tiện ích tìm kiếm đơn giản cho phép bạn tìm kiếm một trang web bằng cách sử dụng biểu thức thông thường.

Các tính năng đang được phát triển

  • chuyển qua kết quả tìm thấy
  • giao diện người dùng được cải thiện
  • chuyển đổi giữa độ nhạy trường hợp
  • tạo lối tắt để chuyển đổi tiện ích mở rộng
  • Cho phép nhấn phím "Enter" khi tìm kiếm (thay vì nhấp vào nút tìm kiếm)

Lưu ý quan trọng
Đây là tiện ích mở rộng hành động trang để nó không hoạt động ngay trên trang bạn đã mở. Tôi khuyên bạn nên khởi động lại trình duyệt của mình trước khi bắt đầu sử dụng tiện ích mở rộng này. Bạn cũng có thể thử làm mới trang đã mở của mình.


3
Tôi không có đề xuất nào tốt hơn, nhưng tiện ích mở rộng này không hoạt động tốt. Khi được bật, AdBlock không chặn tất cả quảng cáo. Ngoài ra, sau khi tìm kiếm trang này, ví dụ, thêm bình luận ngừng hoạt động.
Dennis

3
Liên kết xuất hiện không có sẵn. Đây có phải là tiện ích mở rộng tương tự như Chrome Regex Search không?
Ruslan



1

Trong chế độ Công cụ dành cho nhà phát triển Chrome, nhập ctrl+ shift+ F(trên Windows, không chắc chắn về hệ điều hành khác).

Có một tùy chọn reg-ex để tìm kiếm. Điều này sẽ tìm kiếm tất cả các tệp, vì vậy nó sẽ bao gồm nguồn JavaScript. Tôi không chắc chắn (bằng cách nào) bạn có thể giới hạn nó chỉ ở dạng HTML.


1

Trong Chrome trên macOS, giữ Alt+ Command+ Iđể mở Công cụ dành cho nhà phát triển, chọn mã nguồn HTML cho trang (trong tab "Nguồn"), giữ Command+ Fđể tìm kiếm và chọn .*biểu tượng (Regex).

Nếu bạn chỉ cần tìm kiếm văn bản, bạn có thể sử dụng pandoc để chuyển đổi HTML sang văn bản thuần túy:

$ pandoc https://superuser.com/questions/417875 -t plain -o tmp.txt

Và sau đó sử dụng lessđể tìm kiếm với Regex (tìm kiếm với /).


0

không thực sự là một tìm kiếm, nhưng tôi thấy công cụ đánh dấu regrec này (mà tôi tìm thấy ở đâu đó) khá hữu ích và hoạt động cho tất cả các trình duyệt.

javascript:(function(){var%20count=0,%20text,%20regexp;text=prompt(%22Search%20regexp:%22,%20%22%22);if(text==null%20||%20text.length==0)return;try{regexp=new%20RegExp(%22(%22%20+%20text%20+%22)%22,%20%22i%22);}catch(er){alert(%22Unable%20to%20create%20regular%20expression%20using%20text%20'%22+text+%22'.\n\n%22+er);return;}function%20searchWithinNode(node,%20re){var%20pos,%20skip,%20spannode,%20middlebit,%20endbit,%20middleclone;skip=0;if(%20node.nodeType==3%20){pos=node.data.search(re);if(pos%3E=0){spannode=document.createElement(%22SPAN%22);spannode.style.backgroundColor=%22yellow%22;middlebit=node.splitText(pos);endbit=middlebit.splitText(RegExp.$1.length);middleclone=middlebit.cloneNode(true);spannode.appendChild(middleclone);middlebit.parentNode.replaceChild(spannode,middlebit);++count;skip=1;}}else%20if(%20node.nodeType==1%20&&%20node.childNodes%20&&%20node.tagName.toUpperCase()!=%22SCRIPT%22%20&&%20node.tagName.toUpperCase!=%22STYLE%22){for%20(var%20child=0;%20child%20%3C%20node.childNodes.length;%20++child){child=child+searchWithinNode(node.childNodes[child],%20re);}}return%20skip;}window.status=%22Searching%20for%20%22+regexp+%22...%22;searchWithinNode(document.body,%20regexp);window.status=%22Found%20%22+count+%22%20match%22+(count==1?%22%22:%22es%22)+%22%20for%20%22+regexp+%22.%22;})();

Tất cả các ký tự UUencoding làm cho nó khó đọc, tôi đã tìm thấy những gì dường như là phiên bản đa dòng tại stackoverflow.com/questions/9280195/
Lỗi

1
Tôi sử dụng công cụ đánh dấu regrec
người dùng

Tôi cần JS (không phải bookmarklet) bình thường (để sử dụng trong tiện ích mở rộng của Chrome) và giải pháp từ liên kết @buffer hoạt động tốt
Evgeniy Dolzhenko

Lẽ ra tôi nên cuộn xuống trước khi tôi đã làm điều đó bản thân mình ... pastebin.com/VA9xvmM8
Sebi

0

Tôi muốn đề xuất plugin Chrome này .


Tôi nghĩ rằng bạn đang đề xuất đây là một giải pháp, vì vậy tôi đã chỉnh sửa nó. Ngoài ra, bạn có thể cung cấp một liên kết mà không hiển thị liên kết đầy đủ. Bạn nhấp vào biểu tượng liên kết chuỗi hiển thị khi bạn nhập câu trả lời.
KAE

-1
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.