2013-10-07 2 views
3

У меня есть 500 HTML файлов в моем проекте, где корпус и котировки (" или ') в <title> атрибуте меняться со всех страницами, см несколько примеров нижеКак изменить значение всех названию атрибута в заглавном в возвышенной тексте

<button title="Next" id="next"> Next</button> 
<button title="next"> Next </buton> 
<button title=""please go back">Check</button> 

Я хочу изменить все названия атрибутов в заглавного

<button title="Next" id="next"> Next</button> 
<button title="Next"> Next </buton> 
<button title="Please Go Back">Check</button># 

Я попытался найти и заменить - Regular Expression и кнопка чувствительного случая включены

Найти Что:title=(".*")\s
Заменить:title="\u$"

Но не получил success.Please сказать мне, что я делаю неправильно?

ОБНОВЛЕНО: также необходимо удалить дополнительный ' " см #

+1

Проблема в том, что слишком много заменяется тем, что вы пробовали? Если да, попробуйте использовать '[code] title = (". *? ") \ S [/ code]' (обратите внимание на '?' After '. *'). Это делает '. *' 'Ленивым', что означает будет соответствовать как можно меньше до следующего '[\ code]'. – Jerry

+0

@jerry Спасибо за быстрый ответ, даже я редактировал формат. :) – diEcho

ответ

4

Для дальнейшего мой комментарий, первым это вопрос .* быть «жадным» вместо «ленивым», а это означает, что сопрягает как можно больше (т.е. Next"> Next</button><button title="Next в вашем примере).

Быстрое исправление с помощью «ленивым» .* вместо этого, он же .*? (я добавил ?, чтобы указать возможное наличие пространства, потому что нет ни в ваших примерах):

title=(".*?")\s? 

Для повышения производительности, вы бы используйте отрицание класса:

title=("[^"]+")\s? 

Где [^"]+ соответствует любому символу, кроме ".

И справиться с различными цитатами, вы можете использовать:

title=("[^"]+"|'[^']+')\s? 

Который в основном означает, что либо "[^"]+" или '[^']+' для части в скобках.


Для замены и последовательный выпуск цитаты:

title=(?:"+([^"]+)"+|'+([^']+)'+)\s? 

Заменить:

title="\u$1$2" 

Единственное, что последняя строка будет <button title="Please go back">Check</button>, если это не является проблемой. ..

EDIT: \G фактически работает.Используйте второй замены:

(?:(?<=title=")|(?<!^)\G)[^\s"]+\s? 

Заменить:

\u$0 
+0

Jerry Я стал поклонником вашего способа обучения :) – diEcho

+1

@diEcho Мне нравится начинать с чего не так и исправлять мало-помалу :) Если регулярное выражение не нуждается в полной переработке, вы получите длинное объяснение xD Спасибо! – Jerry

+0

, как насчет этого 'title =" "пожалуйста, вернитесь" ' – diEcho

1
(?<=title=('|")).+?(?=('|")) 

это должно дать вам соответствует Nextnextplease go back, которые вы можете использовать.

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

или использовать title=('|").+?(\1) найти любое название атрибутов в вашем TEKST включая кавычки

+0

не знал поддержки ST3 смотреть вперед/смотреть сзади? :) – diEcho

+0

'('|") (\ 1) 'найдет любой" "или' ' – Sedecimdies

+0

, но это не поможет. Моя проблема не в регулярном выражении – diEcho

 Смежные вопросы

  • Нет связанных вопросов^_^