Нахождение начала строки с помощью регулярного выражения

Нахождение Начала Строки с помощью Регулярного выражения в Блокноте ++

Я хочу разделить файл HTML с 4000 строками из всего jQuery "сделанные" атрибуты в отделении.

должен быть заменен:

В этом эксперименте я могу сделать это с этим регулярным выражением:

[ ^]done[0-9]+="[0-9]+"

Используя Блокнот ++ 5.6.8 Unicode, с файлом, закодированным в ANSI, я помещаю этот regex в поле "Find what". Это только заменяет эти 5 случаев, запускающихся с пространства, это пропустит эти 2 случаев, запускающиеся в начале строки.

Как я могу создать regex для удаления всех атрибутов элемента HTML, запускающегося с ключевого слова?

15
задан p.campbell 4 December 2013 в 16:23
поделиться

4 ответа

Мне тоже нравится Notepad ++, но регулярное выражение - это действительно проблема. Если вы настаиваете на использовании Notepad ++, попробуйте следующее:

  • Сначала выясните, какие символы новой строки используются в вашем документе («Просмотр»> «Показать символ»> «Показать конец строки»)
  • Удалите эти разрывы строк, заменив их одним пробелом (Искать и заменить.CR равно \ r LF равно \ n. Обязательно отметьте "Расширенный" режим поиска)
  • Regex-replace done [0-9] [0-9] * = \ "[0-9] [0-9] * \" с пустой строкой (не забудьте поставить один пробел перед выражением регулярного выражения)

Вуаля! Не очень красиво и чисто, но работает; o)

После этого, если вы хотите, чтобы он снова стал удобочитаемым, вы можете использовать функции HTMLTidy

1
ответ дан 1 December 2019 в 04:27
поделиться

Расширенное Замените "\ n" на "LINEBREAK"

Большое спасибо всем за своевременные ответы. Следуя вашим советам, я сделал следующее:

  • «Блокнот ++> Вид> Показать символ> Показать конец строки» показывает «CR + LF» в конце каждой строки.
  • "Блокнот ++> Поиск> Найти", "Режим поиска" = "Нормальный" , убедился, что "Найти то, что" = "LINEBREAK" ничего не находит.
  • "Режим поиска" = "Расширенный", "Найти what "=" \ n \ r " находит только двойные разрывы (CR + LF + пустая строка); "\ n \ r" ничего не нашли; однако "\ n" находит точно все разрывы строк и только их.
  • Сохранение моего тестового файла «Towncar.htm» как « Towncar_02.htm » (также в кодировке ANSI)
  • В разделе «Расширенный» заменены все «\ n» на «LINEBREAK " (обратите внимание на конечный пробел)
  • В разделе" Регулярное выражение "заменены все вхождения:

      done [0-9] * =" [0-9] * "
     

( Будьте внимательны, проверьте, есть ли ПРОБЕЛ ЗАГОЛОВКИ перед «готово»
и НЕТ ПРОБЕЛОВ! см. Ниже)

с пустой строкой

  • В разделе «Расширенный» заменен каждое вхождение «LINEBREAK» с «\ n» ( без конечного пробела на этот раз после «LINEBREAK»!)
  • Проверено, что полученный файл «Towncar.htm» (после небольшого косметического переформатирования) выглядел Хорошо и красиво, и что после обновления он по-прежнему отображается так же, как резервная копия "Towncar_02.htm".

Отзывы и примечания:

  • Этот форум, по-видимому, хорошо работает в Chrome 4; но с некоторыми браузерами (например,IE6 и другие снятые с производства), при некоторых обстоятельствах вызывает некоторые артефакты; поэтому будьте осторожны:
  • даже если форум не показывает его в вашем браузере, там есть пространство заголовка, то есть в начале регулярного выражения ("готово ... "Регулярное выражение выше) и внутри it, чтобы заменить только строки, начинающиеся с" done ", с начальным пробелом, тем самым сделав еще большую уверенность в том, чтобы НЕ изменять возможные другие строки с «отменено» или «метадон» или
  • таким же образом, даже если форум показывает его в вашем браузере, в конце регулярного выражения нет конечного пробела !
  • в регулярном выражении [0-9] соответствует 1 и только 1 вхождению любой десятичной цифры (символы в диапазоне 0-9); IOW соответствует «0», «1» или «9» и т. Д., Но НЕ «01», «835» или «» (пустая строка) или какому-либо другому.
  • * (звездочка) соответствует 0 или более раз предыдущему символу (здесь он соответствует пустой строке или любой строке, состоящей исключительно из цифр)
  • таким же образом, + (знак плюс) соответствует 1 или более раз предыдущему символу (здесь соответствует любой строке длиной не менее 1 символа, состоящей исключительно из цифр)
    Ссылка: http://sourceforge.net/apps/mediawiki/notepad-plus/index.php?title = Regular_Expressions # Notepad.2B.2B_regex_syntax
13
ответ дан 1 December 2019 в 04:27
поделиться

Боюсь, Notepad ++ Regex не может этого сделать

Notepad ++ с использованием Scintilla regex движок, основанный на каждой строке, поэтому многострочный поиск / замена не может быть выполнен.

Обратите внимание, что \ r и \ n никогда не сопоставляются , потому что в Scintilla регулярный поиск выражений выполняется построчно на строку (без символов конца строки) .

Цитата из http://www.scintilla.org/SciTERegEx.html

0
ответ дан 1 December 2019 в 04:27
поделиться

Вы почти получили это! К сожалению, полное решение в Notepad ++ должно состоять из трех этапов.

  1. Regex search / replace с помощью следующего поиска: \ Конечно, оставьте поле замены пустым, чтобы он просто удалит все, что соответствует. (В Notepad ++ понимание регулярных выражений \ < представляет «начало слова».)

  2. Выберите часть текста, на которую повлиял ваш предыдущий поиск / замена. Вы не хотите выделять весь документ, потому что мы собираемся ...

  3. Убрать новые строки. Нажмите Ctrl-F, чтобы снова вызвать диалоговое окно «Поиск / замена», и на этот раз выберите режим поиска «Расширенный» вместо «Регулярное выражение». В зависимости от формата вашего документа вы захотите найти либо \ n , либо \ r \ n . Поле замены снова должно быть пустым. Также убедитесь, что установлен флажок «В выделенном».

Нажмите «Заменить все», и все готово!

0
ответ дан 1 December 2019 в 04:27
поделиться
Другие вопросы по тегам:

Похожие вопросы: