
У меня есть 30 000 строк текста, в которых есть случайное количество пробелов. Мне нужно добавить символ только к первому ПРОБЕЛУ в каждой строке. Любой, кто может что-то предложить, был бы очень признателен.
решение1
- Ctrl+H
- Найти то, что:
^\S+\h\K
- Заменить:
%
- проверить Обернуть вокруг
- проверить Регулярное выражение
- Replace all
Объяснение:
^ # beginning of line
\S+ # 1 or more non space
\h # 1 horizontal space
\K # forget all we've seen until this position
Замена:
% # the character to insert
Данный:
I have 30,000 lines of text that have randon
number of spaces in them. I need to add a character
to just the first SPACE in each line.
Any who can suggest anything would be
greatly appreciated.
Результат для данного примера:
I %have 30,000 lines of text that have randon
number %of spaces in them. I need to add a character
to %just the first SPACE in each line.
Any %who can suggest anything would be
greatly %appreciated.
решение2
Попробуйте TextPad. Вы можете записывать макросы, а затем воспроизводить их. Поэтому запишите то, что вы хотите сделать для первой строки, и после того, как вы закончите первую строку, оставьте курсор в начале следующей строки. Затем просто воспроизведите макрос до конца файла. Или просто удерживайте клавишу воспроизведения макроса.
решение3
То, что вы ищете, это регулярные выражения. Первое, что вам нужно сделать, это превратить ваш поиск в регулярные выражения
Радость, которую я испытываю, потому что я думаю, что я точно знаю, как решить эту проблему.
https://regex101.com/r/aW4gG2/1
Нужное вам выражение:
Найти: (^.*?)( )
Заменить:\1#\2
Это работает следующим образом в регулярных выражениях: ()
означает «захват». Это означает, что он найдет эту весьма специфичную группу, а затем вы можете ссылаться на нее в замене с помощью \1 или \2 или \3. Число начинается с 1, и вы отсчитываете от открытой скобки
^
означает начать с начала строки. (Поскольку вы хотите, чтобы ваша вставка закрывала ПЕРВЫЙ пробел, мы будем искать его, начиная с начала, найдя первый пробел)
.*?
эта часть находит первое слово перед пробелом. Она делает это, объединяя в одну группу любые символы ( .
) как можно больше ( *
), но как можно меньше необходимых ?
. Без вопросительного знака вы просто захватите каждый символ (включая все пробелы)
( )
эта часть означает, что наша вторая группа — это пробел после первого. Это должен быть первый пробел. Это то, куда мы хотим вставить наш символ.
Замена
\1#\2
\1
относится к первому набору символов. А *
в выражении означает, что набор символов может быть словом любой длины, включая 0.
#
это вставной символ
\2\
это конечно же космос.
Результатом является размещение a #
перед каждым первым пробелом. Если вы хотите, чтобы он был ПОСЛЕ первого пробела, это так же просто, как настройка замены
\1\2#
будет ставиться #
после каждого первого пробела в строке.
Вот в чем сила регулярных выражений. Простой поиск и замена могут выполнить вставку точнее, чем любой макрос. Это гибко, это быстро, и в большинстве случаев это не так уж и сложно.
Вот отличный начальный урок, который объяснит, что такое RegEx и почему он полезен. [RegExOne]. REO — это тот, кто помог мне понять,
Это руководство, которое рекомендуют многие люди, но, честно говоря, я не смог в нем ничего понять. [RegEx.Информация]
На самом деле я больше не возвращался к RegEx.info. Я сразу перешел кДокументация Notepad++что на самом деле было очень полезно в этот момент. Это и, конечно, вы можете проверить с помощью [РегВыражение101]. Единственное, что вам нужно сделать, это добавить /gm
в выражение. Затем вы можете просто вставить фрагмент в TestString и практиковаться, пока не получите правильно.
решение4
Для этого есть очень простое решение.
Я вспомнил, что в Notepad++ уже что-то есть.
- Откройте окно «Заменить»
- Введите «^» в поле «Найти», а затем пробел или любой другой символ, который вы хотите найти.
Это позволит искать только то, что находится в начале строки. - Введите то, что вам нужно, в поле «Заменить на».
- Установите режим поиска на «Регулярное выражение»
- Нажмите «Заменить все».
- Сделанный