2014-09-05 1 views
0

Мне нужно найти и заменить тысячи целевых URL (ahrefs) в десятках разных html-документов ... все ahrefs отформатированы по-разному. Мне нужно заменить все различные целевые URL одним единым целевым URL.Regex найти с двумя подстановочными знаками, заменить один из них - TextMate

Есть два коряги:

  1. Я не хочу, чтобы ввернуть в linkhrefs для ссылок CSS файлов и т.д., а лишь изменить фактический ahrefs

2.in этих документов есть не является равномерной структурой для ahrefs. У некоторых есть класс = материал между a и href. Примеры включают в себя:

<a class='image' href="examplelinkone.com"> 
<a class='image ' href="examplelinkone.com"> (space between e and ') 
<a class='someotherclass' href="examplelinktwo.com" 

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

<a[^<>]+href="[^<>]+" 

... но я не могу понять, как заменить только то, что находится между двойные кавычки href = часть и оставить в покое все, что может быть между a и href

+0

Вот почему вы не соответствуете HTML с регулярным выражением. Представьте это: ' '. – h2ooooooo

ответ

0

Вам необходимо использовать группы захвата.

(<a[^<>]+href=")[^<>]+(") 

В сменной части вам нужно дать, как это,

$1replacement-string$2 

$1 представляет, что мы обратно ссылок на символы, которые присутствуют в индексе группы 1 (<a[^<>]+href="). Далее идет часть, которая была в двойных кавычках. Эта часть была заменена строкой, которую вы дали в качестве замены. Наконец, вторая захваченная группа была обращена назад, чтобы получить последний символ ".

+0

некоторые языки или инструменты используют '\ 1' вместо' $ 1' –

0

Нечто подобное этому образцу должны работать для устранения ничего между котировками href=:

\b(href=\W)[\w\s.]+(?=\W)\b 

Заменить:

$1 

- Испытано в TextMate:

<a class="image" href="examplelinkone.com">anything<a href="more"> 
<a class='image ' href='examplelinkone.com'> (space between e and ')"<something>"All ok"</a> 
<a class='someotherclass' href="examplelinktwo.com" 

Результат:

<a class="image" href="">anything<a href=""> 
<a class='image ' href=''> (space between e and ')"<something>"All ok"</a> 
<a class='someotherclass' href="" 
Смежные вопросы