Як я можу шукати регулярні вирази на веб-сторінках за допомогою Google Chrome або IE?


68

Як я можу шукати регулярні вирази на зразок "foo | bar" на веб-сторінках за допомогою Google Chrome або IE? Мені відомо про розширення "Regular Expression Searcher", але це не працює для мене. (Нічого не відбувається, коли я потрапляю на косу рису.) Огляди в веб-магазині вказують на те, що це поширена проблема багатьох користувачів.


1
Ви не використовуєте Firefox, але вам може бути цікавим одне з його допоміжних додатків: більш глибока веб-сторінка dubeperweb.com Вона не робить REs, але це допомагає більш дрібно шукати. Якщо ви справді відчайдушні, ви завжди можете зберегти джерело веб-сторінки, а потім шукати її за допомогою утиліти чи редактора, який підтримує REs, але це було б дуже негарно.
Джо

можливо, використовуйте NotePad ++ як зовнішній редактор веб-сторінок. Там можна шукати регекс.
Альфред

Відповіді:


39

Використання Javascript для узгодження регулярних виразів

Можливо, ви хочете спробувати це на консолі хрому:

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

Просто відкрийте консоль , скопіюйте та вставте зверху, щоб консоль і натисніть enter. Ви можете протестувати його тут, на цій сторінці.
Це можна покращити, якщо воно підходить.

Тут ми друкуємо для консолі відповідності індексів та відповідного тексту. Тут ми намагаємось зіставити текст, який містить regu, 20 символів до (або менше, якщо початок рядка) та 10 символів після (або менше, якщо 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 ); }

Спробуйте також, це пофарбує фон усіх збігів на сторінці червоного кольору , rexexp не є ідеальним, але, принаймні, він не повинен возитися з тегами 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>');

Закладка на це:

Ще один спосіб використовувати це через javascript:протокол (той самий код, що і трохи вище):

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>');})();

Наприклад, за допомогою javascript:протоколу можна вставити невелике поле пошуку на будь-яку веб-сторінку для пошуку в regexp.
Я думаю, що ви вже знаєте, що простий регулярний вираз також може використовуватися для видалення червоних збігів зі сторінки.
Якщо я продовжую розробляти це ще кілька годин, у нас може з’явитися пошуковий плагін, який підходить для закладки :)


1
Деякі попередні версії хрому не підтримують innerText. Рекомендується перевірити, чи innerTextпідтримується воно, а за замовчуванням - textContentякщо innerTextвоно не використовується.
Спенсер D

Ваш початковий код для пошуку елементів може бути з кодом [...document.body.innerText.matchAll(p)]для 73+ версії Chrome.
Вадим Овчинников

6

Регулярний пошук виразів із Google Chrome.

Проста утиліта пошуку, яка дозволяє шукати веб-сторінку за допомогою регулярного вираження.

Особливості в стадії розробки

  • перемикання знайдених результатів
  • покращений інтерфейс користувача
  • перемикання між чутливістю до регістру
  • створити ярлик для перемикання розширення
  • Дозволити натискання клавіші "Enter" під час пошуку (замість натискання на кнопку пошуку)

Важливі примітки
Це розширення дії на сторінці, тому воно не працюватиме відразу на сторінці, яку ви вже відкрили. Рекомендую перезапустити веб-переглядач, перш ніж почати використовувати це розширення. Ви також можете спробувати оновити відкриту сторінку.


3
Я не маю кращої пропозиції, але це розширення працює не дуже добре. Під час увімкнення AdBlock не блокує всі оголошення. Наприклад, після пошуку цієї сторінки, наприклад, додавання коментаря перестає працювати.
Денніс

3
Посилання видається недоступним. Це те саме розширення, що і пошук Chrome Regex ?
Руслан

4

Розширення Find + має хороші відгуки та про нього ще не згадувалося: https://chrome.google.com/webstore/detail/find%20-regex-find-in-page/fddffkdncgkkdjobemgbpojjeffmmofb?hl=en-US

Я спробував це, і він працює дуже добре і має чіткий, простий інтерфейс користувача.

Він може шукати текст у елементах HTML. Інші, що я намагався, не змогли цього зробити.

введіть тут опис зображення



1

У режимі Інструменти для розробників Chrome введіть ctrl+ shift+ F(у Windows, не впевнені в інших ОС).

Існує опція reg-ex для пошуку. Це буде шукати всі файли, тому він буде включати джерело JavaScript. Я не впевнений (як) ви можете обмежити його лише HTML.


1

У Chrome на macOS утримуйте Alt+ Command+, Iщоб відкрити Інструменти для розробників, виберіть вихідний код HTML для сторінки (на вкладці "Джерела"), утримуйте Command+ Fдля пошуку та виберіть .*символ (Regex).

Якщо вам потрібно шукати лише текст, ви можете використовувати pandoc для перетворення HTML у звичайний текст:

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

А потім використовуйте lessдля пошуку за допомогою Regex (пошук за допомогою /).


0

Насправді не пошук, але я знайшов цей підсвічувач для регулярних викидів (який я десь знайшов) досить корисним і працює для всіх браузерів.

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;})();

Усі UUencoded символи ускладнює читання, я знайшов, що представляється багатолінійною версією, на stackoverflow.com/questions/9280195/…
Alok,

1
Я використовую підсвічувач regexp з цього сайту, і він працює досить добре для мене dpatrickcaldwell.blogspot.in/2010/09/…
користувач

Мені потрібен був звичайний (не закладний) JS (для використання в розширенні Chrome), і рішення з посилання @buffer спрацювало чудово
Євгеній Долженко

Я повинен був прокручувати вниз , перш ніж я зробив це сам ... pastebin.com/VA9xvmM8
Sebi

0

Я хотів би запропонувати цей плагін Chrome.


Я думаю, ви пропонуєте це як рішення, тому я його відредагував. Також ви можете надати посилання без відображення повного посилання. Ви натискаєте на піктограму ланцюжкового зв’язку, яку видно, коли ви набираєте свою відповідь.
KAE

-1
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.