Создание приложения Electron, которое дает вам все цвета любого веб-сайта.

Для этого приложение загружает URL-адрес (например, http://youtube.com ) и сохраняет его в формате HTML. Теперь приложение читает html-файл и ищет любой URL-адрес, который ссылается на файл, который может содержать значение цвета (rgb / rgba / # / hsl), поэтому эти файлы будут css, js, svg и т. Д. Эти URL-адреса добавляются в массив, который позже используется пакетом «электронный менеджер загрузки» …

Например: ["href="/main.css?v=33.1"", "src="http://somesite.com/js/regex.js""]

href = «/ src =» удалены другими функциями

Мой шаблон для URL:

 /(href|src)=("|')(.*?)(.|/)(css|js|svg|json)(.*?)("|')/g 

который просто отлично работает, но не заканчивает сопоставление с символом закрывающей кавычки ‘/ «

соответствие первого примера — это целая строка, она содержит все после закрывающей кавычки, поэтому title = «» является частью URL, что не имеет смысла

 href="https://www.youtube.com/opensearch?locale=de_DE" title="YouTube"{amp}gt;{amp}lt;link rel="manifest" href="/manifest.json" // matches everything until json is found src="bla.css" // works src='bla.css?ver=123.456' // works 

Существует ли правило регулярных выражений, которое гласит: «остановитесь этим персонажем»

мое правило должно быть:

(начинается с href = «, url, заканчивается .css / .js, необязательная версия файла (? v = 123), символ кавычки)

Регулярное выражение для поиска любого тега с атрибутом src или href со значением, содержащим один из этих
Расширения или подкаталоги css, js, svg, json это:

/{amp}lt;[w:] (?=(?:[^{amp}gt;"']|"[^"]*"|'[^']*')*?s(href|src)s*=s*(?:(['"])s*((?:(?!2)[Ss])*?[./](?:css|js|svg|json)(?:(?!2)[Ss])*?)s*2))s (?:"[Ss]*?"|'[Ss]*?'|[^{amp}gt;]*?) {amp}gt;/

https://regex101.com/r/tKrTSO/1

Где :

  • Атрибут в группе 1
  • Значение в группе 2

расширенный

  {amp}lt; [w:]  # Any tag (?= # Assert (a pseudo atomic group) (?: [^{amp}gt;"'] | " [^"]* " | ' [^']* ' )*? s ( href | src ) # (1), href or src attribute s* = s* (?: ( ['"] ) # (2), Quote s* ( # (3 start), value (?: (?! 2 ) [Ss] )*? [./] # One of these extensions or sub-dirs (?: css | js | svg | json ) (?: (?! 2 ) [Ss] )*? ) # (3 end) s* 2 ) ) s  (?: " [Ss]*? " | ' [Ss]*? ' | [^{amp}gt;]*? )  {amp}gt;