Notepad ++ Попытка добавить символ после ТОЛЬКО первого пробела в каждой строке

3076
David Williams

У меня есть 30 000 строк текста, которые содержат случайное количество пробелов. Мне нужно добавить символ только к первому ПРОБЕЛУ в каждой строке. Любой, кто может предложить что-нибудь, будет с благодарностью.

1
Пожалуйста, отредактируйте и предоставьте примеры до и после. Несколько строк для каждого должно быть достаточно. DavidPostill 7 лет назад 0

2 ответа на вопрос

0
Dale

Try TextPad. You can record macros and then play them back. So record what you want to do for the first line and after you have completed the first line, leave your cursor at the beginning of the next line. Then just play the macro until the end of the file. Or just hold down the play macro key.

https://www.textpad.com/

Спасибо, я попробовал это, но ПРОБЕЛ не всегда находится в одном и том же месте на линии. Макрос просто считает движения перед добавлением символа, он не ищет пробел в каждой строке. Иначе, что бы работало нормально David Williams 7 лет назад 0
Вы можете искать место в вашем макросе. Сделайте это просто, выполнив поиск при записи макроса. Dale 7 лет назад 0
Спасибо Дейл, Это сработало хорошо. Просто надо научиться мыслить с боков сейчас. -) David Williams 7 лет назад 0
Потрясающие. Я должен был сделать это много раз для очистки данных. Пожалуйста, отметьте мой ответ. :) Dale 7 лет назад 0
О, Дейл, посмотрите мой ответ, потому что, если вы использовали такой макрос несколько раз, вам может быть интересно узнать о радости регулярных выражений самостоятельно. Wolfkin 7 лет назад 0
RegEx будет работать также Dale 7 лет назад 0
0
Wolfkin

То, что вы ищете, это регулярные выражения. Первое, что вы захотите сделать, это превратить ваш поиск в регулярные выражения

enter image description here

Радость должна была быть, потому что я думаю, что я точно знаю, как решить это

https://regex101.com/r/aW4gG2/1

Вы хотите получить следующее выражение:
Найти: (^.*?)( )
Заменить:\1#\2

Это работает следующим образом в регулярных выражениях ()означает «захват». Это означает, что он найдет эту очень специфичную группу, а затем вы можете обратиться к ней при замене на \ 1 или \ 2 или \ 3. Число начинается с 1, и вы считаете от открытого парантеза

^означает начать с начала строки. (Поскольку вы хотите, чтобы ваша вставка закрывала ПЕРВОЕ пространство, это то, что мы будем искать, начиная с передней части, найдите первое пространство)

.*?эта часть находит первое слово перед пробелом. Это делается путем создания в одной группе любого символа ( .) как можно большего числа ( *), но с наименьшим количеством необходимого ?. Без знака вопроса вы просто захватите каждый символ (включая все пробелы)

( )эта часть означает, что наша вторая группа - это пробел после первой. Это должно быть первым пробелом. Это то, что мы хотим вставить наш персонаж.

Замена

\1#\2

\1относится к первому набору символов. И *в выражении означает, что набор символов может быть словом любой длины, включая 0.

# это символ вставки

\2\ это конечно пространство.

Результат помещает #перед каждым первым пробелом. Если вы хотите это ПОСЛЕ первого пробела, это так же просто, как настройка замены

\1\2#будет ставить #после каждого первого пробела в строке.


Это сила регулярных выражений. Простой поиск и замена могут сделать вставку более точно, чем любой макрос. Он гибкий, быстрый и в большинстве случаев не такой сложный.

Вот отличный учебник для начинающих, который должен объяснить, что такое RegEx и почему он полезен. [ RegExOne ]. REO это тот, который заставил меня понять

Это учебное пособие, которое многие люди рекомендуют, если честно, я не смог понять его смысл. [ RegEx.Info ]

На самом деле я никогда не возвращался в RegEx.info. Я сразу же перешел к Документации Notepad ++, которая на самом деле была очень полезной. Это и, конечно, вы можете проверить с помощью [ RegEx101 ]. Единственное, что вы хотите сделать, это добавить /gmв выражение. Затем вы можете просто вставить фрагмент в TestString и попрактиковаться, пока не получите его правильно.

enter image description here