2010-02-19 2 views
39

У меня есть часть исходного файла HTML, которая содержит строки, которые я хочу выбрать и скопировать сразу, используя регулярные выражения для Notepad ++.Как скопировать выделенный текст в блокнот ++

Вот часть исходного текста:

<option value="Performance" 
>Performance</option> 
<option value="Maintenance" 
>Maintenance</option> 
<option value="System Stability" 
>System Stability</option> 

Я использую регулярное выражение "[0-9a-zA-Z ]*" для поиска значений «значение». Я также выбрал функцию в Notepad ++ search, чтобы выделить/пометить найденный текст. Этот рабочий режим теперь я хочу скопировать или вырезать только выделенный текст в буфер обмена для дальнейшей обработки. Но я не могу найти эту функцию в Notepad ++. Разве это просто невозможно, или я слишком тупой?

+0

Я не знаком с блокнотом ++, но не Ctrl-C работы (как это делает везде в Windows), или вы ищете скрипты способ сделать это, или что? –

+0

Ctrl-C не копирует строки. Похоже, что Notepad ++ имеет разные способы пометить и выделить текст в буфере. Текст, соответствующий регулярному выражению, выделяется в некотором цвете, например, текст, помеченный мышью, выделяется серым цветом. Этот текст можно скопировать с помощью Ctrl-C. Но вы не можете сразу отмечать разные части текста. – Alex

+0

[Ответ Ankit] (http://superuser.com/questions/477628/export-all-regular-expression-matches-in-textpad-or-notepad-as-a-list) в суперпользователе - это способ сделать он использует только Notepad ++ – Fidel

ответ

18

Попробуйте вместо этого:

Во-первых, зафиксировать окончание строки проблема: (Notepad ++ не позволяет многострочные регулярные выражения)

Поиск [Расширенный режим]:\r\n> (или самостоятельно линия окончаний системы)

Заменить:>

затем

Поиск [Regex Mode]:<option[^>]+value="([^"]+)"[^>]*>.*

(если вы хотите, чтобы все вхождений value, а не только варианты, просто удалить ведущий option)

Заменить:\1

Объяснение второго регулярного выражения:

<option[^>]+  Find a < followed by "option" followed by 
       at least one character which is not a > 

value="   Find the string value=" 

([^"]+)   Find one or more characters which are not a " and save them 
       to group \1 

"[^>]*>.*  Find a " followed by zero or more non-'>' characters 
       followed by a > followed by zero or more characters. 

Да, он обрабатывает HTML с регулярным выражением - these warnings применяется - внимательно проверьте вывод.

+0

+1 собирался опубликовать что-то похожее на это. Хороший ответ. – Beanish

+0

Спасибо большое! –

+0

Это может быть правильное направление. Но группа \ 1 содержит только первое значение, здесь «Производительность». остальное не сохраняется в группе. – Alex

1

Нет, начиная с Notepad ++ 5.6.2, это не представляется возможным. Хотя выбор столбцов (Alt + Selection) возможен, множественный выбор явно не реализован и, следовательно, также не поддерживается функцией поиска.

+0

Странная вещь заключается в том, что 5.6.6 позволяет выделить соответствующие части текста в некотором цвете, но только не позволяет помещать их в буфер обмена. – Alex

78

Начиная с Notepad ++ 5.9 они добавили функцию «Удалить немаркированные линии», которая может использоваться для удаления всего, что вам не нужно, а также для поиска и замены для другого текста в каждой строке значений.

  1. Используйте Поиск -> Поиск -> Отметить функциональность маркировать каждую линию, которую вы хотите сохранить/копировать и не забудьте поставить галочку «Линия закладки», прежде чем маркировка текста
  2. Выберите Поиск -> Bookmark- -> Удалить немаркированные линии
  3. Используйте поиск -> Найти -> Заменить, чтобы заменить другой текст, который вы не хотите хранить/копировать с нуля
  4. Сохраните оставшийся текст или скопируйте его.

Вы также можете сделать подобную вещь, используя поиск -> Закладка -> Копировать BOOKMARKED Линии

Технически вы можете не копировать выделенный текст, но вы можете пометить линии с заметным текстом, а затем выполнять различные операции с закладками или немаркированными линиями.

+0

отличный совет, только то, что мне нужно, спасибо! – montrealist

+0

+1 - Отличная подсказка и очень удобно при тралении (больших) файлов журнала для определенных записей. – CraigTP

+0

это работает. Спасибо. –

19

Я добавляю это для полноты, поскольку это сообщение попадает высоко в результаты поиска Google.

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

  1. Используйте знак под поиском и введите регулярное выражение в Find What.
  2. Выберите закладку «Линия» и нажмите «Отметить все».
  3. Нажмите «Поиск» -> «Закладка» -> «Скопировать закладки».
  4. Вставить в новый документ.
  5. Возможно, вам придется удалить ненужный текст в строке, которая не была частью регулярного выражения с поиском и заменой.
+1

Nr 5 в этом списке - это часть времени для меня. Поскольку текст с текстом с копией, очевидно, не поддерживается NotePad ++, я обратился к другому фрагменту бесплатного программного обеспечения: Expresso от Ultrapico. Я вложил весь текст в панель «Пример текста» Expresso и тот же поиск в регулярном выражении, который я подготовил в Notepad ++, в панель «Регулярные выражения». Затем я нажал «Run match», щелкнув правой кнопкой мыши на панели «Результаты поиска»/«Копировать сопоставленный текст в буфер обмена». –

0

У меня была та же проблема. Вы можете перечислить соответствия регулярных выражений на новой вкладке, каждое совпадение в новой строке в редакторе PSPad, которое очень похоже на Notepad ++.

Нажмите Ctrl + F для поиска, проверьте regexp opion, поместите регулярное выражение и нажмите «Список».

5

Это была бы отличная возможность в Notepad ++. Я использую следующий метод для того чтобы извлечь все матчи из файла:

powershell 
select-string -Path input.txt -Pattern "[0-9a-zA-Z ]*" -AllMatches | % { $_.Matches } | select-object Value > output.txt 

И если вы хотите только отдельные матчи в отсортированном списке:

powershell 
select-string -Path input.txt -Pattern "[0-9a-zA-Z ]" -AllMatches | % { $_.Matches } | select-object Value -unique | sort-object Value > output.txt 
+1

всецело дерьмо, ур спасатель – dbinott

+1

Удивительный! Гораздо лучше, чем решения Notepad ++. – blindstuff

0

Это не возможно с помощью блокнота, но ЗДЕСЬ ЛЕГКО РЕШЕНИЕ:

Вам потребуется бесплатный Expresso v3.1 http://www.ultrapico.com/ExpressoDownload.htm

I прибегает к другой части бесплатного программного обеспечения: Expresso от Ultrapico.

  1. После установки перейдите на вкладку «Режим тестирования».
  2. Скопируйте REGEX в панель «Регулярные выражения».
  3. Paste весь текст для поиска в «образец текста» панели Expresso,

  4. Нажмите кнопку «Выполнить матч». Щелкните правой кнопкой мыши на панели «Результаты поиска» и «Экспортировать в ...» или «Копировать согласованный текст в буфер обмена».

N.B .: оригинальный автор @Andreas Янссон но он скрыт в комментариях, так что с тех пор эта страница высокий рейтинг в Google Search я оставляю его здесь для других.

0

Это похоже на https://superuser.com/questions/477628/export-all-regular-expression-matches-in-textpad-or-notepad-as-a-list.

Я надеюсь, что вы пытаетесь извлечь:
"Performance"
"Техническое обслуживание"
"Система курсовой устойчивости"

Вот путь - Шаг 1/3: Open Search-> Find-> Замените вкладку, выберите кнопку «Регулярное выражение». Введите в поле «Найти что: (\« [a-zA-Z0-9 \ s] + \ ») и в поле« Заменить »: \ n \ 1 и нажмите« Заменить все ». Before Clicking Replace All

Шаг 2/3: После первого шага ваши ключевые слова будут в следующих строках. (Как показано на следующем рисунке). Теперь перейдите на вкладку «Марк» и введите одно и то же выражение регулярных выражений в «Найти что: Поле». Установите галочку в строке закладки. Затем нажмите «Отметить все». Bookmark the lines

Шаг 3/3: Перейти к поиску -> Закладки -> Удалить немаркированные строки. Remove Unmarked lines

Так у вас есть окончательный результат, как показано ниже Final Result

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