Объединение двух строк в одну — Notepad

#regex #notepad

#регулярное выражение #notepad

Вопрос:

У меня есть такая строка

 assignee: Akebono Brake Industry Co. Ltd.  , 
 Fujitsu Limited  application_no: 06/946,825
  

Я хочу, чтобы результат был

 assignee: Akebono Brake Industry Co. Ltd.  , Fujitsu Limited  
application_no: 06/946,825
  

Чтобы перенести application_no: 06/946,825 в следующую строку, я могу найти application_no: и заменить его на napplication_no: в моем NOTEPAD

Но как я могу вернуть эту строку, которая охватывает следующую строку, обратно в первую строку? Я имею в виду, что я должен сделать, чтобы Fujitsu ограничивалась строкой, начинающейся с правопреемника:

Какие-либо рекомендации, пожалуйста?

Комментарии:

1. Происходит ли разрыв строки после запятой?

2. Да, это так. Во всех случаях такого шаблона разрыв строки происходит только после запятой. Во всех подобных случаях новая строка начинается с пробела.

Ответ №1:

Поскольку Extended — единственный режим, который корректно обрабатывает новые строки, но вам нужно сопоставить с регулярными выражениями, вам нужно будет сделать это в два шага.

Во-первых, используйте поиск и замену регулярных выражений, чтобы добавить какой-либо узнаваемый токен в начало каждой строки, которую вы хотите переместить вверх, я использовал «СОВПАДЕНИЕ», но вы определенно можете это изменить.

Шаг 1: Добавьте токен в начало совпадающих строк

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

Шаг 2: Используйте токен для удаления разрыва строки

Комментарии:

1. это будет работать только для строки, начинающейся с «Fujitsu Limited», не такой общей.

2. OP не указал какой-либо общий шаблон, для которого он хочет выполнить замену.

3. Это моя вина. Я должен был упомянуть. Тот, который я привел, был просто примером. На самом деле у меня есть похожие шаблоны в файле с более чем 10 миллионами записей. Мне нужно найти все вхождения ^[ ][A-Z] (то есть строки, начинающиеся с пробела, за которым следует заглавный алфавит) и объединить всю эту строку со строкой непосредственно перед ней.

4. @BhavaniKannan — Смотрите мое редактирование, оно занимает два шага, но должно делать то, что вы хотите.

5. @F.J — Фантастика! Просто, но работает как удовольствие! Итак, почему я об этом не подумал? Мне не хватает элементарного здравого смысла :-/

Ответ №2:

Вот еще одно решение. Один шаг:

Поиск:

 (^.*,.*$)rn([ A-Z]*[ ])
  

Заменить:

 12rn
  

Ответ №3:

Я не знаком с notepad , но наверняка после запятой есть «/ n»? Не могли бы вы просто удалить символ, который создает новый сегмент строки? т.е. обратное тому, что вы делаете с application_no:

Комментарии:

1. Я пробовал это. Это удаляет новый разрыв строки, но не помогает мне перенести (добавить) эту новую строку обратно в предыдущую строку.

Ответ №4:

Вы не можете сделать это с помощью регулярных выражений из-за недостатка в движке Scintilla, который использует Notepad . Однако он работает в «расширенном» режиме поиска, поэтому используйте это. Найдите ,rn и замените на , .

Измените значение rn только n в Linux или только r в Mac OS.

Ответ №5:

Я только что написал этот макрос и работает с вашим примером. Добавьте этот макрос в shortcuts.xml , если вы используете win7, файл находится по адресу C:Users {имя пользователя}AppDataРоумингБлокнот

Просто откройте свой текстовый файл и наведите курсор на первую строку, затем запустите этот макрос.

 <Macro name="stackoverflow" Ctrl="no" Alt="no" Shift="no" Key="0">
    <Action type="3" message="1700" wParam="0" lParam="0" sParam="" />
    <Action type="3" message="1601" wParam="0" lParam="0" sParam="application_no" />
    <Action type="3" message="1625" wParam="0" lParam="0" sParam="" />
    <Action type="3" message="1702" wParam="0" lParam="768" sParam="" />
    <Action type="3" message="1701" wParam="0" lParam="1" sParam="" />
    <Action type="0" message="2302" wParam="0" lParam="0" sParam="" />
    <Action type="0" message="2451" wParam="0" lParam="0" sParam="" />
    <Action type="0" message="2306" wParam="0" lParam="0" sParam="" />
    <Action type="0" message="2326" wParam="0" lParam="0" sParam="" />
    <Action type="3" message="1700" wParam="0" lParam="0" sParam="" />
    <Action type="3" message="1601" wParam="0" lParam="0" sParam="application_no" />
    <Action type="3" message="1625" wParam="0" lParam="0" sParam="" />
    <Action type="3" message="1702" wParam="0" lParam="768" sParam="" />
    <Action type="3" message="1701" wParam="0" lParam="1" sParam="" />
    <Action type="0" message="2308" wParam="0" lParam="0" sParam="" />
    <Action type="1" message="2170" wParam="0" lParam="0" sParam="amp;#x000D;" />
    <Action type="1" message="2170" wParam="0" lParam="0" sParam="amp;#x000A;" />
</Macro>