Подтвердить что ты не робот

Поиск строки, начинающейся с регулярного выражения

Поиск строки Начало использования регулярного выражения в Notepad ++

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

<DIV class=menu done27="1" done26="0"
done9="1" done8="0" done7="1"
done6="0" done4="20">

следует заменить на:

<DIV class=menu>

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

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

Использование Notepad ++ 5.6.8 Юникод, с файлом, закодированным в ANSI, я помещаю это регулярное выражение в поле "Найти что". Он заменяет только 5 вхождений, начиная с пробела, он пропускает 2 вхождения, начиная с начала строки.

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

4b9b3361

Ответ 1

Extended Заменить "\n" на "LINEBREAK"

Спасибо всем за эти своевременные ответы. Следуя вашим советам, вот что я сделал:

  • "Notepad ++ > View > Показать симвul > Показать конец строки" показывает "CR + LF" на каждом конце строки.
  • "Notepad ++ > Search > Find", "Search mode" = "Normal", убедитесь, что "Find what" = "LINEBREAK" ничего не находит
  • "Режим поиска" = "Расширенный", "Найти, что" = "\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 и другими прекращенными), при некоторых обстоятельствах он вызывает некоторые артефакты; поэтому будьте осторожны:
  • даже если форум не отображает его в вашем браузере, там есть пространство заголовка, то есть в начале регулярного выражения ( "сделанное..." регулярное выражение выше) и внутри это, чтобы заменить только строки, начинающиеся с "done", с начальным пространством, тем самым делая еще более надежным, чтобы НЕ изменить возможные другие строки с "отмененным" или "метадоном" или еще
  • так же, даже если форум показывает один в вашем браузере, в конце Regex есть без конечного пробела!
  • в Regex, [0-9] соответствует 1 и только 1 вхождение любой десятичной цифры (символы в диапазоне 0-9); IOW он соответствует "0" или "1" или "9" и т.д., Но НЕ "01" или "835" или "" (пустая строка) или в зависимости от того, какая из них.
  • * (звездочка) соответствует 0 или более раз предыдущему символу (здесь он соответствует пустой строке или любой строке, состоящей исключительно из цифр)
  • samewise, + (знак плюса) соответствует 1 или более раз предыдущему символу (здесь он соответствует любой строке длиной не менее 1 символа, состоящей исключительно из цифр)
    Ссылка: http://sourceforge.net/apps/mediawiki/notepad-plus/index.php?title=Regular_Expressions#Notepad.2B.2B_regex_syntax

Ответ 2

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

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

Voila! Не очень приятно n чисто, но это работает; o)

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

Ответ 3

Простым способом является:

  • Перейдите в "Поиск" и "Заменить"
  • Введите "\n" в "Найти, что"
  • Введите строку в "Заменить с помощью
  • Выберите "Extended" в "режиме поиска"
  • Нажмите "Заменить все"

Он будет подключать вашу строку в начале каждой строки, кроме первой строки.

Ответ 4

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

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

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

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

Ответ 5

У вас это было почти так! К сожалению, полное решение в Notepad ++ должно быть трехэтапным процессом.

  • Найти/заменить Regex следующим поиском: \<done[0-9]+="[0-9]+"[ ]* Конечно, оставьте поле replace пустым, чтобы оно просто удалило все, что соответствует. (В Notepad ++ понимание регулярных выражений \< представляет собой "начало слова".)

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

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

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