Как я могу искать регулярные выражения на веб-страницах, используя Google Chrome или IE?


69

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


1
Вы не используете Firefox, но вам может показаться интересным одно из его дополнений: более глубокий веб deeperweb.com Он не поддерживает RE, но помогает более детальному поиску. Если вы действительно в отчаянии, вы всегда можете сохранить источник веб-страницы, а затем искать его с помощью утилиты или редактора, который поддерживает RE, но это будет довольно уродливо.
— Джо

возможно использовать NotePad ++ в качестве внешнего редактора для веб-страниц. Там вы можете искать регулярные выражения.
— Альфред

Ответы:


40

Использование Javascript для сопоставления регулярных выражений

Может быть, вы хотите попробовать это в консоли Chrome:

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

Просто откройте консоль , скопируйте и вставьте выше в консоль и нажмите enter. Вы можете проверить это здесь на этой странице.
Это может быть улучшено, если оно подходит.

Здесь мы печатаем в консоль сопоставленные индексы и сопоставленный текст. Здесь мы пытаемся сопоставить текст, который содержит regu20 символов до (или меньше, если начало строки) и 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:протокол, можно вставить небольшое поле поиска на любую веб-страницу для поиска регулярных выражений.
Я думаю, что вы уже знаете, что простое регулярное выражение также может использоваться для удаления красных совпадений со страницы.
Если я продолжу развивать это еще несколько часов, у нас может быть плагин поиска, который помещается в закладки :)


1
Некоторые предыдущие версии Chrome не поддерживают innerText. Рекомендуется проверить, innerTextподдерживается ли, и по умолчанию, textContentесли innerTextне используется.
— Спенсер D

Ваш исходный код для поиска элементов может быть с кодом [...document.body.innerText.matchAll(p)]для 73+ версии Chrome.
— Вадим Овчинников

6

Поиск по регулярным выражениям из Google Chrome.

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

Особенности в разработке

  • переключаться между найденными результатами
  • улучшенный интерфейс
  • переключаться между чувствительностью к регистру
  • создать ярлык для переключения расширения
  • Разрешить нажатие клавиши «Ввод» при поиске (вместо нажатия на кнопку поиска)

Важные замечания
Это расширение действия страницы, поэтому оно не будет работать сразу на странице, которую вы уже открыли. Я рекомендую перезагрузить браузер, прежде чем начать использовать это расширение. Вы также можете попробовать обновить открытую страницу.


3
У меня нет лучшего предложения, но это расширение работает не очень хорошо. При включении AdBlock не блокирует все объявления. Кроме того, после поиска на этой странице, например, добавить комментарий перестает работать.
— Деннис

3
Ссылка оказывается недоступной. Это то же расширение, что и Chrome Regex Search ?
— Руслан

4

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

Я попробовал, и он работает очень хорошо и имеет простой и понятный интерфейс.

Он может искать текст по элементам HTML. Другие, которых я пытался сделать, не смогли этого сделать.

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


3

Другие упомянутые расширения не работали для меня, поэтому я написал собственное расширение Chrome с открытым исходным кодом, которое вы можете попробовать здесь: https://chrome.google.com/webstore/detail/regex-search/bcdabfmndggphffkchfdcekcokmbnkjl?hl = еп & ГЛ = US

Исходный код доступен на github: https://github.com/gsingh93/regex-search


1

В режиме Chrome Developer Tools введите ctrl+ shift+ F(в Windows нет уверенности в других ОС).

Есть регулярная опция для поиска. Это будет искать все файлы, поэтому он будет включать в себя источник 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
Я использую подсветку регулярных выражений с этого сайта, и она довольно хорошо работает для меня. Dpatrickcaldwell.blogspot.in/2010/09/…
— пользователь

Мне нужен был обычный (не букмарклетный) JS (для использования в расширении Chrome), и решение по ссылке @buffer работало нормально
— Евгений Долженко

Я должен был прокрутить вниз, прежде чем я сделал это сам ... pastebin.com/VA9xvmM8
— Sebi

0

Я хотел бы предложить этот плагин Chrome.


Я думаю, что вы предлагаете это как решение, поэтому я отредактировал его. Также вы можете предоставить ссылку без отображения полной ссылки. Вы нажимаете на значок цепочки ссылок, который отображается при вводе ответа.
— КАЕ

-1

Это не работает, когда я помещаю его в строку URL. Было бы круто, хотя, если бы это было.
— Ахмед

Также удаляет форматирование :(
— Solomon Ucko

Кроме того, эта javascript:часть не будет вставлена ​​в строку URL в Chrome.
— Соломон Уцко,

1
Осталось только добавить куда-нибудь DROP TABLE .. ;-))
— Drakonoved
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.