Ho 30.000 righe di testo che contengono un numero limitato di spazi. Devo aggiungere un personaggio solo al primo SPAZIO in ogni riga. Chiunque possa suggerire qualcosa sarebbe molto apprezzato.
Ho 30.000 righe di testo che contengono un numero limitato di spazi. Devo aggiungere un personaggio solo al primo SPAZIO in ogni riga. Chiunque possa suggerire qualcosa sarebbe molto apprezzato.
Risposte:
^\S+\h\K
%
Spiegazione:
^ # beginning of line
\S+ # 1 or more non space
\h # 1 horizontal space
\K # forget all we've seen until this position
Sostituzione:
% # the character to insert
Dato:
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.
Risultato per un esempio dato:
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.
Prova TextPad. È possibile registrare macro e quindi riprodurle. Quindi registra cosa vuoi fare per la prima riga e dopo aver completato la prima riga, lascia il cursore all'inizio della riga successiva. Quindi riproduci la macro fino alla fine del file. O semplicemente tieni premuto il tasto macro play.
Quello che stai cercando sono le espressioni regolari. La prima cosa che vorrai fare è trasformare la tua ricerca in espressioni regolari
Gioia da provare perché penso di sapere esattamente come risolverlo
https://regex101.com/r/aW4gG2/1
L'espressione che desideri è:
Trova: (^.*?)( )
Sostituisci:\1#\2
Il modo in cui funziona è come segue nelle espressioni regolari il ()
mezzo "cattura". Ciò significa che troverà questo gruppo altamente specifico e quindi puoi fare riferimento ad esso nella sostituzione con \ 1 o \ 2 o \ 3. Il numero inizia da 1 e si contano dalla paratesi aperta
^
significa iniziare dall'inizio della riga. (Perché vuoi che il tuo inserto copra il PRIMO spazio è quello che cercheremo partendo dalla parte anteriore trova il primo spazio)
.*?
questa parte trova la prima parola davanti allo spazio. Lo fa creando in un gruppo qualsiasi carattere ( .
) il maggior numero possibile ( *
) ma il meno necessario ?
. Senza il punto interrogativo catturerai solo ogni personaggio (inclusi tutti gli spazi)
( )
questa parte significa che il nostro secondo gruppo è lo spazio dopo il primo. Questo dovrebbe essere il primo spazio. Questo è ciò che vogliamo inserire il nostro personaggio.
La sostituzione
\1#\2
\1
si riferisce al primo set di caratteri. E l' *
espressione indica che il set di caratteri può essere una parola di qualsiasi lunghezza, incluso 0.
#
è il carattere di inserimento
\2\
è ovviamente lo spazio.
Il risultato sta mettendo un #
davanti a ogni primo spazio. Se lo vuoi DOPO il primo spazio è semplice come regolare la sostituzione
\1\2#
inserirà il #
dopo ogni primo spazio per riga.
Questo è il potere delle espressioni regolari. Una semplice ricerca e sostituzione può eseguire l'inserimento in modo più preciso rispetto a qualsiasi macro. È flessibile, è veloce e il più delle volte non è così difficile.
Ecco un ottimo tutorial per iniziare che dovrebbe spiegare cos'è RegEx e perché è utile. [ RegExOne ]. REO è quello che mi ha fatto capire
Questo è un tutorial che molte persone raccomandano che onestamente non potrei avere molto senso. [ RegEx.Info ]
In realtà non sono mai tornato su RegEx.info. Sono passato direttamente alla documentazione di Notepad ++, che in realtà è stata molto utile a questo punto. Questo e ovviamente puoi provare con [ RegEx101 ]. L'unica cosa che vorrai fare è aggiungere /gm
l'espressione. Quindi puoi semplicemente incollare uno snippet in TestString ed esercitarti fino a quando non lo ottieni correttamente.