Как я могу искать регулярные выражения на веб-страницах, используя 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. Другие, которых я пытался сделать, не смогли этого сделать.

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

twasbrillig
источник
3

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

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

gsingh2011
источник
1

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

Есть регулярная опция для поиска. Это будет искать все файлы, поэтому он будет включать в себя источник JavaScript. Я не уверен (как), вы можете ограничить это только HTML.

Fuhrmanator
источник
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 (поиск с помощью /).

gmarmstrong
источник
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.

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

Перейдите в javascript: void ((function () {b = document.body; b.innerHTML = b.innerHTML.replace (new RegExp ("(> {1} [^ \ n \ <] *?) ([^ \ n \ <] {0,30} "+ prompt (" Пожалуйста, введите регулярное выражение для поиска. ") +" [^ \ n \ <] {0,10}) "," g "), '$ 1' + prompt ('Пожалуйста, введите текст для размещения перед вхождениями.') + '$ 2' + prompt ('Пожалуйста, введите текст для размещения после вхождений.'))}) ()) `.

Соломон Уцко
источник
Это не работает, когда я помещаю его в строку URL. Было бы круто, хотя, если бы это было.
Ахмед
Также удаляет форматирование :(
Solomon Ucko
Кроме того, эта javascript:часть не будет вставлена ​​в строку URL в Chrome.
Соломон Уцко,
1
Осталось только добавить куда-нибудь DROP TABLE .. ;-))
Drakonoved