Regex: Put all sentences from Column\Tabs on a single Line



  • hello. I have 2 columns or maybe two sentences separated by tabs. Every sentence is separated by tab and divided under one another.

    To understand much better my problem, please take a look at the print screen.

    https://snag.gy/eqfgTD.jpg

    So, I want to put those 2 sentence in one single line, after the other, without being separated by tabs or space.

    I try this regex, but it is not very good, because mix them in instead to put side by side.

    Search:
    \s+(.*?)
    Replace by:
    leave a space

    Can anyone help me with another solution?



  • Hello, Vasile,

    The screenshot of your text before replacement gives us a clue but we lack a second screenshot about the text needed, after replacement !!

    Anyway, I tried to guess it !

    So, starting with the original text, below, with a single tabulation character between the two parts of each line

    Part 1 Line 1	Part 1 Line 2
    Part 2 Line 1	Part 2 Line 2
    
    
    The part 1 of Line 5	Line 6 Part 1
    The part 2 of Line 5	Line 6 Part 2
    
    First part of Line 8	Beginning of Line 9
    Second part of Line 8	End of Line 9
    

    And, applying the following S/R :

    SEARCH (?-s)(^.*)\t+(.*)\R(.*)\t+(.*)

    REPLACE \1\3\r\n\2\4

    should give you the modified text, below, without any tabulation character :

    Part 1 Line 1Part 2 Line 1
    Part 1 Line 2Part 2 Line 2
    
    
    The part 1 of Line 5The part 2 of Line 5
    Line 6 Part 1Line 6 Part 2
    
    First part of Line 8Second part of Line 8
    Beginning of Line 9End of Line 9
    

    Notes :

    • The search regex considers two consecutive lines, which contains, each, at least one tabulation character as a separator

    • In replacement, these four parts are, simply, re-organized, according to the template 12-34 => 13-24

    • If you’re dealing with Unix files, the replacement zone should be \1\3\n\2\4

    Cheers,

    guy038



  • hello, guy038. I have always problem with S/R: Nothing works with this \R.

    Please take a look at this print screen:

    https://snag.gy/LFDrXI.jpg



  • or, maybe, instead of \t+ should use [\t+ ].

    I tried Search (?-s)[\t+ ](.*)\R(.*)[\t+ ](.*) and replace cu \1\3\n\2\4, nothing happens.



  • you ask about a screen shot, what it should should look after change. I modify the file, and below you have a print screen.

    BEFORE: https://snag.gy/eqfgTD.jpg

    AFTER: https://snag.gy/bzWi4S.jpg



  • by the ways, I was wrong. those are spaces (not tabs) in between sentences. Or both



  • Hi, Vasile

    First of all, I don’t think that you have a problem with the \R syntax. May be, it was just because your initial text did not contain any tabulation character. Note that you got the error message Can’t find the text … and not the message invalid regular expression !!

    Anyway, as from the screenshoots, you seems to use Windows files, you may, also, replace any \R sub-regex by the simple regex \r\n


    From your last posts, I can, now, figure your problem out ! So, I suppose that the separator, between the two parts of a line, is, either :

    • One or more Tabulation character(s)

    • Two or more Space characters

    Therefore, placed in a non-capturing group, the regex, detecting this separator, is (?:\t+| {2,})


    So, from the original text, slightly modified, below :

    Part 1 Line 1			Part 1 Line 2
    Part 2 Line 1	Part 2 Line 2
    
    
    The part 1 of Line 5    Line 6 Part 1
    The part 2 of Line 5  Line 6 Part 2
    
    First part of Line 8	Beginning of Line 9
    Second part of Line 8   End of Line 9
    

    The following S/R, below :

    SEARCH (?-s)(^.*?)(?:\t+| {2,})(.*)\R(.*?)(?:\t+| {2,})(.*)

    REPLACE \1 \3 \2 \4

    would produce the new text below :

    Part 1 Line 1 Part 2 Line 1 Part 1 Line 2 Part 2 Line 2
    
    
    The part 1 of Line 5 The part 2 of Line 5 Line 6 Part 1 Line 6 Part 2
    
    First part of Line 8 Second part of Line 8 Beginning of Line 9 End of Line 9
    

    NOTES :

    • In the original example text, the separator is :

      • 3 Tabulation characters in Line 1
      • 1 Tabulation character in Line 2
      • 4 Space characters in Line 5
      • 2 Space characters in Line 6
      • 1 Tabulation character in Line 8
      • 3 Space characters in Line 9
    • The search regex considers a block of two consecutive lines

    • If the symbol | represents the separator between the two parts of a line, this S/R changes the two lines :

    1|2
    3|4

    into the single line :

    \1 \3 \2 \4, with a space character between the four parts

    Best Regards,

    guy038



  • SUPER ANSWER, guy038. !! WORKS ! Thanks a lot !

    I, also, have a little problem. The same problem, but on a longer text file. Actually, this was my concern, and I believe the solution was easier.

    So, please see this longer text file. The same problem.

    http://textuploader.com/dt6m8



  • Hello Vasile,

    Thank you for your uploaded text ! The site textuploader.com seems to be worth looking at :-))

    After copying your text with the usual CTRL + C/ CTRL + V action, I noticed two facts :

    • Sometimes, words are separated by two or three space characters and strings, as, for instance, “• se obţin” contains also three space characters. So, I think it’s better to define the separator, between the two parts of each line, as, either :

      • Five or more consecutive space characters

      • One or more consecutive tabulation character(s)

    To visually see this separator, just open the Search > Mark… dialog and, in the Find what: zone, type the regex \t+| {5,}, choose the Regular expression search mode and click on the Mark All button

    -Secondly, from your text, on textuploader.com, the fourth line, from the end ( ending with pe sine este însă mai, is followed, after copy, with a space character, instead of the two characters \r\n ( Windows End of Line ) !. So I replaced the space character, after the word mai, by a normal line break ( CRLF )


    The general method is not too difficult to figure out !

    Let suppose I represent a five spaces separator by the symbol and a tabulation separator with the | symbol.

    Then, if I change the previous replacement regex by the regex \1 \3\t\2 \4, the original text :

    1…2
    3…4
    5…6
    7…8

    will be changed, after a first click on the Replace All button, into :

    1 3|2 4
    5 7|6 8

    And, after a second click on the Replace All button, into :

    1 3 5 7|2 4 6 8

    Now, the process is stopped because it remains, only, a single line. You just need to get rid of the single tabulation character and change it by a space character !

    Note : for correct results your text must have an EVEN number of lines. If it’s not the case, just add a last dummy line ( for instance, #\t# )


    To conclude :

    • Place the caret at the very beginning of your text

    • Preferably, uncheck the Wrap around option

    • Use the regex S/R, below :

    SEARCH (?-s)(^.*?)(?:\t+| {5,})(.*)\R(.*?)(?:\t+| {5,})(.*)

    REPLACE \1 \3\t\2 \4

    • Then, click on the Replace All button, SEVERAL times, till the message Replace All: 0 occurrences were replaced appears

    • Finally, replace the single tabulation character, that remains, with a space and, eventually, get rid of each part of the dummy line, temporary added


    Starting with your uploaded text, below :

    fie că învaţă mult pentru a se descurca mai bine             să ne simţim ca şi cînd nu am avea nimic. Aceasta este
    decît colegii lor de clasă, fie că ajung să adopte              forţa produsului final numit valoare.
    o atitudine de capitulare, deoarece nu cred că ar            Ce sînt valorile? Sînt convingerile noastre individua-
    putea avea şanse de reuşită.                                            le în legătură cu ceea ce este cel mai important pentru noi.
    Într-o societate modernă învăţarea competitivă se              Valorile noastre reprezintă sisteme proprii de consideraţie
    cuvine a fi înlocuită printr-o învăţare prin cooperare,          despre bine şi rău, corect şi incorect, lucruri de care avem
    unde:                                                                                  nevoie în mod fundamental ca să mergem înainte. În caz
    se lucrează împreună pentru a realiza obiective              contrar, nu ne vom simţi oameni integri şi împliniţi.
    şi pentru a îndeplini sarcini comune;                                Sistemul de valori al şcolii contemporane este unul
    •   se înţelege că obiectivele pot fi atinse doar dacă         complex şi nici pe departe perimat. Atîta doar că ritmul
    şi ceilalţi membri ai grupului reuşesc s-o facă;                  şi dinamica momentului impun flexibilizarea cadrului
    •   se obţin rezultate benefice pentru întregul grup;           axiologic cu concepte care ar face conexiuni directe între
    •   rezultatul fiecăruia depinde într-o anumită                    „teoria” din sala de clasă şi „practica” existenţei
    măsură de succesul altor membri ai grupului.                   cotidiene. Succesul ca valoare intrinsecă lumii noastre
    Într-o eră a schimbărilor permanente, a supra-                 concurenţiale este o idee agreată în mediul educaţional.
    solicitării noului, şcolile trebuie să fie în stare să-şi              Însă valenţele practice ale noţiunii date - filozofice şi
    definească  priorităţile,  alegînd  între  o  strategie             pragmatice în acelaşi timp - urmează a fi descoperite zi
    competitivă sau obiectivele inovatoare şi adaptarea            de zi atît de către profesori cît şi de elevi. Fiecare îşi
    acestor transformări la necesităţile şi aspiraţiile proprii,         stabileşte propria traiectorie a Succesului, întrucît nu în
    creînd şi condiţii interne respective. Pentru a ne schimba         zadar se afirmă: „Cel care află multe de la alţii, poate
    cu adevărat, pentru a ne dezvolta şi prospera, trebuie să          deveni învăţat, cel care se înţelege pe sine este însă mai
    devenim perfect conştienţi de regulile noastre şi ale          inteligent. Cel care îi ţine sub control pe alţii poate fi
    altora, precum şi de felul în care ne apreciem sau ne            puternic, cel care se stăpîneşte pe sine este însă şi mai
    judecăm succesul sau eşecul. Altfel, putem avea totul şi       puternic” (Lao-Tsu, Tao Teh King).
    

    After six consecutive clicks on the Replace All button, we obtain the ONE line text, below :

    fie că învaţă mult pentru a se descurca mai bine decît colegii lor de clasă, fie că ajung să adopte o atitudine de capitulare, deoarece nu cred că ar putea avea şanse de reuşită. Într-o societate modernă învăţarea competitivă se cuvine a fi înlocuită printr-o învăţare prin cooperare, unde: se lucrează împreună pentru a realiza obiective şi pentru a îndeplini sarcini comune; •   se înţelege că obiectivele pot fi atinse doar dacă şi ceilalţi membri ai grupului reuşesc s-o facă; •   se obţin rezultate benefice pentru întregul grup; •   rezultatul fiecăruia depinde într-o anumită măsură de succesul altor membri ai grupului. Într-o eră a schimbărilor permanente, a supra- solicitării noului, şcolile trebuie să fie în stare să-şi definească  priorităţile,  alegînd  între  o  strategie competitivă sau obiectivele inovatoare şi adaptarea acestor transformări la necesităţile şi aspiraţiile proprii, creînd şi condiţii interne respective. Pentru a ne schimba cu adevărat, pentru a ne dezvolta şi prospera, trebuie să devenim perfect conştienţi de regulile noastre şi ale altora, precum şi de felul în care ne apreciem sau ne judecăm succesul sau eşecul. Altfel, putem avea totul şi să ne simţim ca şi cînd nu am avea nimic. Aceasta este forţa produsului final numit valoare. Ce sînt valorile? Sînt convingerile noastre individua- le în legătură cu ceea ce este cel mai important pentru noi. Valorile noastre reprezintă sisteme proprii de consideraţie despre bine şi rău, corect şi incorect, lucruri de care avem nevoie în mod fundamental ca să mergem înainte. În caz contrar, nu ne vom simţi oameni integri şi împliniţi. Sistemul de valori al şcolii contemporane este unul complex şi nici pe departe perimat. Atîta doar că ritmul şi dinamica momentului impun flexibilizarea cadrului axiologic cu concepte care ar face conexiuni directe între „teoria” din sala de clasă şi „practica” existenţei cotidiene. Succesul ca valoare intrinsecă lumii noastre concurenţiale este o idee agreată în mediul educaţional. Însă valenţele practice ale noţiunii date - filozofice şi pragmatice în acelaşi timp - urmează a fi descoperite zi de zi atît de către profesori cît şi de elevi. Fiecare îşi stabileşte propria traiectorie a Succesului, întrucît nu în zadar se afirmă: „Cel care află multe de la alţii, poate deveni învăţat, cel care se înţelege pe sine este însă mai inteligent. Cel care îi ţine sub control pe alţii poate fi puternic, cel care se stăpîneşte pe sine este însă şi mai puternic” (Lao-Tsu, Tao Teh King).
    

    I hope that it’s the expected result which you’re waiting for :-))

    Cheers,

    guy038



  • guy038, I don’t have to say you are THE BEST ! WORKS PERFECTLY !!

    thank you very much !


Log in to reply