Как изменить ссылки в нескольких файлах с помощью регулярных выражений в Sublime Text 3 - PullRequest
2 голосов
/ 25 июня 2019

Мне нужно скопировать URL-адрес определенного тега в более чем 500 HTML-файлов, где URL-адреса являются случайными, и поместить его в другой, но с сохранением всего кода.То есть скопируйте ссылку внутри кавычек тега href и повторите ее в другом теге.

Например, я хочу изменить это:

href="PODCAST_32_LINK" 
url: 'RANDOM_PODCAST_LINK'

на:

href="PODCAST_32_LINK"
url: 'PODCAST_32_LINK'

Я могу перехватить ссылку с помощью регулярного выражения [\S\s]*?, используя функцию Find, но я не уверен, что можно вставить в поле Replace.

Я пытался:

Find: href="[\S\s]*?"
Replace: url:'$1'

Однако, конечно, это нарушает код, заменяя первое на второе.

Ответы [ 2 ]

1 голос
/ 25 июня 2019

Вы можете использовать

Найти что : (?s)(href="([^"]+)".*?url: ')[^']* Заменить на : $1$2

См. Демоверсию regex

Подробности

  • (?s) - . теперь соответствует любому символу, включая символы разрыва строки
  • (href="([^"]+)".*?url: ') - Группа 1:
    • href=" - литеральная подстрока
    • ([^"]+)- Группа 2: 1+ символов, отличных от "
    • " - " char
    • .*? - любые 0+ символов, как можно меньше
    • url: ' - буквальная подстрока.
  • [^']* - 0 или более символов, отличных от '.

Замена - конкатенациязначений в группе 1 (от href до url: ') и 2 (содержание href).

1 голос
/ 25 июня 2019

Исходя из вашего разработанного выражения, если я понимаю вопрос, вы можете просто захотеть здесь группу захвата,

href="([\s\S]*?)"

и замените его на url: '$1', что может сработать.

Пожалуйста, посмотрите демо здесь

Другие выражения, которые, вероятно, будут работать здесь:

href="([^"]+)"
href="([^"]+?)"
href="(.*)"
href="(.*?)"
href="(.+)"
href="(.+?)"

все заменяется на:

url: '$1'
...