поиск текста на странице через Regex
Добрый день.
Просматриваю большое количество научных статей через базы типа Scopus, где ссылки на оригинальные публикации представлены в виде DOI кода - 10.ХХХХ(Х)/bc.XXXXXX. При добавлении этого кода к гиперссылке http://dx.doi.org/<код DOI> происходит переход на страницу статьи. Идея моя в том, чтобы написать скрипт, который сам бы Regex'ом находил код на станице и подставлял в ссылку. Но загвоздка в том, как присвоить результат поиска переменной? Отзовитесь, кто знает :) |
Цитата:
|
Для себя можно так:
var selection = getSelection(); new Set( document.body.textContent.match(/\b10\.[^\/\s]+\/[^\/\s]+/g) ).forEach( match => { while(find(match)){ var link = document.createElement('a'); link.href = 'http://dx.doi.org/' + match; selection.getRangeAt(0).surroundContents(link); } selection.collapse(document.body); } ); window.scrollTo(0, 0); Если текст простой - можно обойтись перебором текстовых нод. Если регулярка сложная - нужно добавить обработку случаев, когда одно совпадение находится в другом.) |
window.find поиск строки в документе
Aetae,
не знал даже об этом :thanks: https://developer.mozilla.org/en-US/...PI/Window/find <!DOCTYPE html> <html> <head> <title>Untitled</title> <meta charset="utf-8"> <style type="text/css"> </style> <script> findString = function findText(text) { var a = window.find(text); alert("String \x22" + text + "\x22 found? " + a); } </script> </head> <body> <p>Apples, Bananas, and Oranges.</p> <button type="button" onClick='findString("Apples")'>Search for Apples</button> <button type="button" onClick='findString("Banana")'>Search for Banana</button> <button type="button" onClick='findString("Orange")'>Search for Orange</button>1234 </body> </html> |
document.body.innerHTML= document.body.innerHTML.replace(/\b10\.[^\/\s]+\/[^\/\s]+/gi, '<a href="http://dx.doi.org/$&">$&</a>'); |
j0hnik,
убил страницу, если там были назначены обработчики. |
рони,
Пиф паф рони, айм киллер! :D |
Цитата:
|
Спасибо всем за помощь!
В конечном виде код, который через букмарк запускаю на странице, такой (немного изменил паттерн поиска): javascript: window.open( "http://doi.org/"+ document.body.textContent.match(/\b10\..{4}\/\S+\b/i)) Результат первого найденого DOI открывается в новом окне, что и требовалось. |
Часовой пояс GMT +3, время: 11:39. |