#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. это будет работать только для строки, начинающейся с «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>