RegEx Help with Backreference I think
-
@Robert-Or-Janet-Diebel said:
I am getting invalid RegEX with this new one.
This could be data-related.
A regex can be tested for validity by searching using it in an empty Notepad++ tab. If the find status bar says “0 matches” then the regex is valid. If it says “invalid regex”, then, well…
Side note: PythonScript writers can test for a valid regex without data by using the
regex_is_valid
function from HERE. -
@guy038 Thanx much. I do not know what happened yesterday.However I have made great progress today with the help you provided. The following MACRO works great for these first two steps:
<Macro name="\c2Book\v2Verse" Ctrl="no" Alt="no" Shift="no" Key="0"> <Action type="2" message="0" wParam="42083" lParam="0" sParam="" /> <Action type="3" message="1700" wParam="0" lParam="0" sParam="" /> <Action type="3" message="1601" wParam="0" lParam="0" sParam="(?-s)^\\c (\d+)(?=(.*\R)+?\\toc2 (.+)$)" /> <Action type="3" message="1625" wParam="0" lParam="2" sParam="" /> <Action type="3" message="1602" wParam="0" lParam="0" sParam="${3} ${1}" /> <Action type="3" message="1702" wParam="0" lParam="512" sParam="" /> <Action type="3" message="1701" wParam="0" lParam="1609" sParam="" /> <Action type="3" message="1700" wParam="0" lParam="0" sParam="" /> <Action type="3" message="1601" wParam="0" lParam="0" sParam="(?-is)\\v (?=(?s:.+?^(\u[\u\l -]+ \d+$)))" /> <Action type="3" message="1625" wParam="0" lParam="2" sParam="" /> <Action type="3" message="1602" wParam="0" lParam="0" sParam="${1}:" /> <Action type="3" message="1702" wParam="0" lParam="512" sParam="" /> <Action type="3" message="1701" wParam="0" lParam="1609" sParam="" /> <Action type="2" message="0" wParam="42083" lParam="0" sParam="" /> </Macro>
-
@guy038 said in RegEx Help with Backreference I think:
If you’re still unsure about certain details, just ask me !
I can select and remove the preamble from:
\id NUM kulav.txt 1993 A.Horton.Luvale \h KULAVA \toc1 Mukanda waKulava \toc2 Kulava \toc3 Kulat2 MUKANDA WAt1 KULAVAt2 MUKANDA WAMUCHITANU ÁSONEKELE MOSE \imt Kujimbula mukanda \is Ásonekele mukanda \ip Ou Mukanda waKulava vauvulukila Mose ngwavo ikiye ausonekele. Ou Mose ikiye uze vavuluka kuMukanda waKulovoka (Tala Kulo 2:1-10). Apwile mwanaAmilame mwanaKohate mwanaLevi (Tala ku1 Mijimbu 6:3), mwanaYakova (Tala Kuputuka 25:22-26) uze valukile ngwavo Isalele kuli Kalunga (Kuputuka 22:38). Isalele apwile mwanaIsaka mwanaApalahama, uze apwile mwanaTela. \ip Mose vamuvulukila kusoneka mikanda yosena yitanu — Kuputuka naKulovoka naVyavaLevi naKulava nou waKuhituluka muJishimbi. Unjiho wauvulu wamuChilongeselo-chalushiko-lwaKalunga-Chamwaka wamuvuluka ikiye kupwa muka-kusoneka (Kulovoka 17:14; 34:27; Kuhituluka 31:9). Kaha muChilongeselo-chalushiko-lwaKalunga-Chachihya, vamuvulukamo kakavulu, kuhakilako nomu Ivene Kulishitu amuvulukila kupwa muka-kusoneka (Mateu 8:4). Apwile nauhashi wakusoneka, kaha apwile nalwola lwakusoneka, kaha nawa atachikijile shindakanyi yavyosena vize vyasolokelenga. \is Mwaka wakuusoneka \ip Mukanda uno vausonekele mukachi kamwaka wa1450 na1400 shimbu kanda kusemuka chaMwata Yesu Kulishitu. \is Vihande vili mumukanda \ip Lijina lyamukanda uno lyafuma hakupwa ukiko mukanda vasonekelemo kulava chavaIsalele. Mukanda waKulava waswika kuvihande vize vyatwama mumukanda waKulovoka. Kaha wapwa mukanda mwatwama chihande chakukimba chavana vaIsalele mumakango, kutesa nakuzeneka chavo kwononoka Kalunga kavo Uze avasokwele muundungo, numba vahone kwingilila kuKatesha-Mbalaneya mulifuchi lize lyalushiko. \ip Wapwa mukanda walumbununa milimo nakutambuka chavana vaIsalele, kaha tunahase kuufwanyisa nachiyoyelo chamuka-Kulishitu. Kaha wapwa mukanda wavihande vyamwakutambukila mwakalemesa kumeso aKalunga, kaha wakukulula vihande vili mumikanda yikwavo, ngana — \ili KUPUTUKA — wapwa mukanda wavuluka tengeso yaKalunga, kuvulumuna chamutu, nahaputukila tanga yavaIsalele. \ili KULOVOKA — wavuluka kusokoka chavana vaIsalele \ili WAVYAVALEVI — wavuluka kulifukula kuli Kalunga nakulikata nenyi \ili KULAVA — wavuluka vyosena vize vyapandama kumilimo yavo nakutambuka chavo. \ip Chachilemu etu kutachikiza ngwetu, kakweshi mutu vechelele alilingile mwaya kusaka chenyiko. Ngamba hingamba yaKalunga muli vana vaIsalele apwile wakulava, kaha atachikijile chihela chenyi muze mutanga yenyi, namulimo wenyi uze vamuhanyine kuzatanga. Mukanda waKulava tunahase kuufwanyisa navize vasoneka kuMukanda wavaka-Kolinde wakavanga mukapetulu likumi nakavali (1 Kolinde 12) haze vavuluka chilyo hichilyo chamujimba chapwa chachilemu, kaha nawa chatwama namulimo wacho. \ip Chikwavo nawa — chize kweseka chosena vesekele vaIsalele muze mumakango, kavachihashileko, vachihonene hakuzeneka kufwelela Kalunga. Ngocho etu kuvanga tuzame mulufwelelo. \is Vihanda vitanu vili mumukanda \ili1 vaIsalele nomu vatambukililenga mumazavu avo, 1:1—10:10 \ili1 Kufuma kupili yaShinai nakuheta kuKateshe-mbalaneya, 10:11—12:16 \ili1 VaIsalele hakupwa kuKateshe-mbalaneya, 13:1—19:22 \ili1 Kutambwojoka chavaIsalele mumakango, 20:1—33:49 \ili1 Kuvalweza chakukumishilako, 33:50—36:13. Kulava 1 Kulava 1:1 Halikumbi lyakavanga mukakweji wamuchivali, mumwaka wamuchivali kufuma haze valovokele mulifuchi lyaEjipitu, Yehova alwezele Mose mumakango aShinai muMbalaka yakuliwanyina ngwenyi, Kulava 1:2 Lavenu lizavu lyavana vaIsalele lyosena mwaya jitanga javo muvisaka vyavakakuluka javo mukuvula chamajina avo, malunga vosena umwe naumwe, Kulava 1:3 kufuma kuli ava vamyaka makumi avali (20) nakusambula, vosena vaze vakuhasa kulwa jita muli vaIsalele. Ove naAlone muvalave halizavu halizavu. Kulava 1:4 Kaha kutanga hitanga kufume lunga apwenga nayenu, kaha mutu himutu apwenga mwata wakutanga yavakakuluka jenyi. Kulava 1:5 Awa akiko majina amalunga navamikafwa — mutanga yaLuvene mufume Elizule mwanaSheteule. Kulava 1:6 Mutanga yaShimeyone mufume Shelumiyele mwanaZulishatai. Kulava 1:7 Mutanga yaYuta mufume Nashone mwanaAminatave. Kulava 1:8 Mutanga yaIsakale mufume Netanele mwanaZuwale. Kulava 1:9 Mutanga yaZevulune mufume Eliyave mwanaHelone. Kulava 1:10 Vamuli vana vaYosefwe navapwa ava — mutanga yaEfwalime mufume Elishama mwanaAmihute, mutanga yaManase mufume Ngamalyele mwanaPetazule.
With:
"\\id.*\\toc2 (.*?)\r\n.*?Kulava 1\r\n" - REPLACE - "Kulava 1\r\n"
However, how to fit in the lookahead to get the BookName without entering it manually still escapes me. I am working on it, but if you have any guidance, that would be great, and much appreciated.
-
Hello, @robert-or-janet-diebel,
Ah…, I think I’ve got the solution !
When I first see your last regex
\\id.*\\toc2 (.*?)\r\n.*?Kulava 1\r\n"
, I understood that you wanted to store the name which comes next to the\toc2
string till the nearest SAME name (Kulava
) further on, followed with some digits and ending the current line, isn’t it ?So, after some tests, the solution is this regex S/R :
FIND
(?s-i)\\id.+?\\toc2 (.+?)\R.*?(?=^\1 \d+$)
REPLACE
Leave EMPTY
First, as in my previous post, I use the initial
(?s-i)
modifiers. So the search, either :-
is sensitive to case in order that the boundaries of the searched gap are strictly identical ( so
Kulava
) -
Considers any
.
regex char as matching any character, even a line-break char
This rule implies that we’ll use the
?
lazy quantifier in order to get :-
The nearest
\toc2
string after the\id
string (\\id.+?\\toc2
) -
The nearest LINE-BREAK after the stored name (
(.+?)\R
) -
The nearest range of characters (
.*?
) before the look-ahead ((?=^\1 \d+$)
)
The stored
bookName
is the regex expression(.+?)
after\toc2
and right before\R
which represents any line-break (\r
in MAC files,\n
in Unix/Linux files or\r\n
in Windows files )The stored value (
Kulava
) is re-used as\1
, with the same case, inside the look-ahead structure ((?=......)
) , followed with a space char and some digits (\d+
) ending the current line ($
)To refer to this
group 1
, you could have used, in the SEARCH regex, instead of\1
, one of the syntaxes below :-
(?=^\g1 \d+$)
or(?=^\g{1} \d+$)
or(?=^\g<1> \d+$)
or(?=^\g'1' \d+$)
-
(?=^\k1 \d+$)
or(?=^\k{1} \d+$)
or(?=^\k<1> \d+$)
or(?=^\k'1' \d+$)
For identical results !
Again, as you see, we may refer to the group ( after the
\toc2
string ) later, in the look-ahead part, just because it’s found AFTER the current regex engine position !
Practically, this regex S/R :
-
Selects all the characters between the first line
\id NUM kulav.txt 1993 A.Horton.Luvale
and the next string EXCLUDED, which was stored after the\toc2
string (Kulava
) -
Deletes all this range of characters as the
Replacement
zone is EMPTY
Thus, given the INPUT text :
\id NUM kulav.txt 1993 A.Horton.Luvale \h KULAVA \toc1 Mukanda waKulava \toc2 Kulava \toc3 Kulat2 MUKANDA WAt1 KULAVAt2 MUKANDA WAMUCHITANU ÁSONEKELE MOSE \imt Kujimbula mukanda \is Ásonekele mukanda \ip Ou Mukanda waKulava vauvulukila Mose ngwavo ikiye ausonekele. Ou Mose ikiye uze vavuluka kuMukanda waKulovoka (Tala Kulo 2:1-10). Apwile mwanaAmilame mwanaKohate mwanaLevi (Tala ku1 Mijimbu 6:3), mwanaYakova (Tala Kuputuka 25:22-26) uze valukile ngwavo Isalele kuli Kalunga (Kuputuka 22:38). Isalele apwile mwanaIsaka mwanaApalahama, uze apwile mwanaTela. \ip Mose vamuvulukila kusoneka mikanda yosena yitanu — Kuputuka naKulovoka naVyavaLevi naKulava nou waKuhituluka muJishimbi. Unjiho wauvulu wamuChilongeselo-chalushiko-lwaKalunga-Chamwaka wamuvuluka ikiye kupwa muka-kusoneka (Kulovoka 17:14; 34:27; Kuhituluka 31:9). Kaha muChilongeselo-chalushiko-lwaKalunga-Chachihya, vamuvulukamo kakavulu, kuhakilako nomu Ivene Kulishitu amuvulukila kupwa muka-kusoneka (Mateu 8:4). Apwile nauhashi wakusoneka, kaha apwile nalwola lwakusoneka, kaha nawa atachikijile shindakanyi yavyosena vize vyasolokelenga. \is Mwaka wakuusoneka \ip Mukanda uno vausonekele mukachi kamwaka wa1450 na1400 shimbu kanda kusemuka chaMwata Yesu Kulishitu. \is Vihande vili mumukanda \ip Lijina lyamukanda uno lyafuma hakupwa ukiko mukanda vasonekelemo kulava chavaIsalele. Mukanda waKulava waswika kuvihande vize vyatwama mumukanda waKulovoka. Kaha wapwa mukanda mwatwama chihande chakukimba chavana vaIsalele mumakango, kutesa nakuzeneka chavo kwononoka Kalunga kavo Uze avasokwele muundungo, numba vahone kwingilila kuKatesha-Mbalaneya mulifuchi lize lyalushiko. \ip Wapwa mukanda walumbununa milimo nakutambuka chavana vaIsalele, kaha tunahase kuufwanyisa nachiyoyelo chamuka-Kulishitu. Kaha wapwa mukanda wavihande vyamwakutambukila mwakalemesa kumeso aKalunga, kaha wakukulula vihande vili mumikanda yikwavo, ngana — \ili KUPUTUKA — wapwa mukanda wavuluka tengeso yaKalunga, kuvulumuna chamutu, nahaputukila tanga yavaIsalele. \ili KULOVOKA — wavuluka kusokoka chavana vaIsalele \ili WAVYAVALEVI — wavuluka kulifukula kuli Kalunga nakulikata nenyi \ili KULAVA — wavuluka vyosena vize vyapandama kumilimo yavo nakutambuka chavo. \ip Chachilemu etu kutachikiza ngwetu, kakweshi mutu vechelele alilingile mwaya kusaka chenyiko. Ngamba hingamba yaKalunga muli vana vaIsalele apwile wakulava, kaha atachikijile chihela chenyi muze mutanga yenyi, namulimo wenyi uze vamuhanyine kuzatanga. Mukanda waKulava tunahase kuufwanyisa navize vasoneka kuMukanda wavaka-Kolinde wakavanga mukapetulu likumi nakavali (1 Kolinde 12) haze vavuluka chilyo hichilyo chamujimba chapwa chachilemu, kaha nawa chatwama namulimo wacho. \ip Chikwavo nawa — chize kweseka chosena vesekele vaIsalele muze mumakango, kavachihashileko, vachihonene hakuzeneka kufwelela Kalunga. Ngocho etu kuvanga tuzame mulufwelelo. \is Vihanda vitanu vili mumukanda \ili1 vaIsalele nomu vatambukililenga mumazavu avo, 1:1—10:10 \ili1 Kufuma kupili yaShinai nakuheta kuKateshe-mbalaneya, 10:11—12:16 \ili1 VaIsalele hakupwa kuKateshe-mbalaneya, 13:1—19:22 \ili1 Kutambwojoka chavaIsalele mumakango, 20:1—33:49 \ili1 Kuvalweza chakukumishilako, 33:50—36:13. Kulava 1 Kulava 1:1 Halikumbi lyakavanga mukakweji wamuchivali, mumwaka wamuchivali kufuma haze valovokele mulifuchi lyaEjipitu, Yehova alwezele Mose mumakango aShinai muMbalaka yakuliwanyina ngwenyi, Kulava 1:2 Lavenu lizavu lyavana vaIsalele lyosena mwaya jitanga javo muvisaka vyavakakuluka javo mukuvula chamajina avo, malunga vosena umwe naumwe, Kulava 1:3 kufuma kuli ava vamyaka makumi avali (20) nakusambula, vosena vaze vakuhasa kulwa jita muli vaIsalele. Ove naAlone muvalave halizavu halizavu. Kulava 1:4 Kaha kutanga hitanga kufume lunga apwenga nayenu, kaha mutu himutu apwenga mwata wakutanga yavakakuluka jenyi. Kulava 1:5 Awa akiko majina amalunga navamikafwa — mutanga yaLuvene mufume Elizule mwanaSheteule. Kulava 1:6 Mutanga yaShimeyone mufume Shelumiyele mwanaZulishatai. Kulava 1:7 Mutanga yaYuta mufume Nashone mwanaAminatave. Kulava 1:8 Mutanga yaIsakale mufume Netanele mwanaZuwale. Kulava 1:9 Mutanga yaZevulune mufume Eliyave mwanaHelone. Kulava 1:10 Vamuli vana vaYosefwe navapwa ava — mutanga yaEfwalime mufume Elishama mwanaAmihute, mutanga yaManase mufume Ngamalyele mwanaPetazule.
After the replacement you’re left with the expected text :
Kulava 1 Kulava 1:1 Halikumbi lyakavanga mukakweji wamuchivali, mumwaka wamuchivali kufuma haze valovokele mulifuchi lyaEjipitu, Yehova alwezele Mose mumakango aShinai muMbalaka yakuliwanyina ngwenyi, Kulava 1:2 Lavenu lizavu lyavana vaIsalele lyosena mwaya jitanga javo muvisaka vyavakakuluka javo mukuvula chamajina avo, malunga vosena umwe naumwe, Kulava 1:3 kufuma kuli ava vamyaka makumi avali (20) nakusambula, vosena vaze vakuhasa kulwa jita muli vaIsalele. Ove naAlone muvalave halizavu halizavu. Kulava 1:4 Kaha kutanga hitanga kufume lunga apwenga nayenu, kaha mutu himutu apwenga mwata wakutanga yavakakuluka jenyi. Kulava 1:5 Awa akiko majina amalunga navamikafwa — mutanga yaLuvene mufume Elizule mwanaSheteule. Kulava 1:6 Mutanga yaShimeyone mufume Shelumiyele mwanaZulishatai. Kulava 1:7 Mutanga yaYuta mufume Nashone mwanaAminatave. Kulava 1:8 Mutanga yaIsakale mufume Netanele mwanaZuwale. Kulava 1:9 Mutanga yaZevulune mufume Eliyave mwanaHelone. Kulava 1:10 Vamuli vana vaYosefwe navapwa ava — mutanga yaEfwalime mufume Elishama mwanaAmihute, mutanga yaManase mufume Ngamalyele mwanaPetazule.
You may test this regex :
-
By changing the name after the
\toc2
string and changing, accordingly, the same name on the line right above theKulava 1:1 Halikumbi lyakavanga mukakweji wamuchivali, mumwaka ............
line => The regex should work and deletes the preamble form -
By changing the name after the
\toc2
string and putting an other name on the line right above theKulava 1:1 Halikumbi lyakavanga mukakweji wamuchivali, mumwaka ............
line => This time, the regex should not work and no replacement happens ( it would also be the case with, for example, the line\toc2 Kulava
and the linekulava 1
, below, all in lower case ! )
Best Regards,
guy038
-
-
@guy038 I have one last hurtle in this project.
With the number of examples you have given I feel I should be able to get it eventually. It also relates to getting the book and using it in the search.
Given:Kulava 1 Kulava 1:1 Halikumbi lyakavanga mukakweji wam Kulava 1:2 Lavenu lizavu lyavana vaIsalele ly Kulava 1:3 kufuma kuli ava vamyaka makumi ava Kulava 1:4 Kaha kutanga hitanga kufume lunga Kulava 1:5 Awa akiko majina amalunga navamika Kulava 1:6 Mutanga yaShimeyone mufume Shelumi Kulava 1:7 Mutanga yaYuta mufume Nashone mwan Kulava 1:8 Mutanga yaIsakale mufume Netanele Kulava 1:9 Mutanga yaZevulune mufume Eliyave Kulava 1:10 Vamuli vana vaYosefwe navapwa ava
I wish to Replace the {space} with tab after “Book{Space}Chapter#:Verse#” and before verse text like:
Kulava 1 Kulava 1:1 Halikumbi lyakavanga mukakweji wam Kulava 1:2 Lavenu lizavu lyavana vaIsalele ly Kulava 1:3 kufuma kuli ava vamyaka makumi ava Kulava 1:4 Kaha kutanga hitanga kufume lunga Kulava 1:5 Awa akiko majina amalunga navamika Kulava 1:6 Mutanga yaShimeyone mufume Shelumi Kulava 1:7 Mutanga yaYuta mufume Nashone mwan Kulava 1:8 Mutanga yaIsakale mufume Netanele Kulava 1:9 Mutanga yaZevulune mufume Eliyave Kulava 1:10 Vamuli vana vaYosefwe navapwa ava
This works manually entering the Book:
"(Kulava\s\d+:\d+)\s(.*)$" Replace "$1\t$2"
I am trying to get the lookahead working.
As stated before:
“I am working on it, but if you have any guidance, that would be great, and much appreciated.”
I do seem to be missing something. Sorry! -
@guy038 said in RegEx Help with Backreference I think:
I am struggling with trying to accomplish what I think is required.
FIND BookName and isolate into a Group
Indicate the text to be acted on
Input required change, the goal
Put the change into the REPLACE fieldI think that is it, but fitting it into a lookahead RegEx is still eluding me.
I will continue to work on it, but I have been for hours, and any guidance would be great.
-
I think that the most simple solution is to verify that, throughout your file, any “space” character, after the verse number, is ALWAYS a tabulation char !
So, given your ssimple INPUT text :
Kulava 1 Kulava 1:1 Halikumbi lyakavanga mukakweji wamuchivali, mumwaka wamuchivali kufuma haze valovokele mulifuchi lyaEjipitu, Yehova alwezele Mose mumakango aShinai muMbalaka yakuliwanyina ngwenyi, Kulava 1:2 Lavenu lizavu lyavana vaIsalele lyosena mwaya jitanga javo muvisaka vyavakakuluka javo mukuvula chamajina avo, malunga vosena umwe naumwe, Kulava 1:3 kufuma kuli ava vamyaka makumi avali (20) nakusambula, vosena vaze vakuhasa kulwa jita muli vaIsalele. Ove naAlone muvalave halizavu halizavu. Kulava 1:4 Kaha kutanga hitanga kufume lunga apwenga nayenu, kaha mutu himutu apwenga mwata wakutanga yavakakuluka jenyi. Kulava 1:5 Awa akiko majina amalunga navamikafwa — mutanga yaLuvene mufume Elizule mwanaSheteule. Kulava 1:6 Mutanga yaShimeyone mufume Shelumiyele mwanaZulishatai. Kulava 1:7 Mutanga yaYuta mufume Nashone mwanaAminatave. Kulava 1:8 Mutanga yaIsakale mufume Netanele mwanaZuwale. Kulava 1:9 Mutanga yaZevulune mufume Eliyave mwanaHelone. Kulava 1:10 Vamuli vana vaYosefwe navapwa ava — mutanga yaEfwalime mufume Elishama mwanaAmihute, mutanga yaManase mufume Ngamalyele mwanaPetazule.
The following regex S/R :
-
FIND
^(.+ \d+:\d+)[\x20\t]+
-
REPLACE
${1}\t
would return this OUTPUT text :
Kulava 1 Kulava 1:1 Halikumbi lyakavanga mukakweji wamuchivali, mumwaka wamuchivali kufuma haze valovokele mulifuchi lyaEjipitu, Yehova alwezele Mose mumakango aShinai muMbalaka yakuliwanyina ngwenyi, Kulava 1:2 Lavenu lizavu lyavana vaIsalele lyosena mwaya jitanga javo muvisaka vyavakakuluka javo mukuvula chamajina avo, malunga vosena umwe naumwe, Kulava 1:3 kufuma kuli ava vamyaka makumi avali (20) nakusambula, vosena vaze vakuhasa kulwa jita muli vaIsalele. Ove naAlone muvalave halizavu halizavu. Kulava 1:4 Kaha kutanga hitanga kufume lunga apwenga nayenu, kaha mutu himutu apwenga mwata wakutanga yavakakuluka jenyi. Kulava 1:5 Awa akiko majina amalunga navamikafwa — mutanga yaLuvene mufume Elizule mwanaSheteule. Kulava 1:6 Mutanga yaShimeyone mufume Shelumiyele mwanaZulishatai. Kulava 1:7 Mutanga yaYuta mufume Nashone mwanaAminatave. Kulava 1:8 Mutanga yaIsakale mufume Netanele mwanaZuwale. Kulava 1:9 Mutanga yaZevulune mufume Eliyave mwanaHelone. Kulava 1:10 Vamuli vana vaYosefwe navapwa ava — mutanga yaEfwalime mufume Elishama mwanaAmihute, mutanga yaManase mufume Ngamalyele mwanaPetazule.
You could suppose that using a look-behind, for the first part of the whole search regex, would work :
-
FIND
(?<=^.+ \d+:\d+)[\x20\t]+
-
REPLACE
\t
But, this construction is illegal as our
Boost
regex engine does not support look-behinds of VARIABLE length !
To get around this drawback, we may use the
\K
feature :-
First, the search regex matches any leading part
..... \d+:\d+
-
As soon as it meets the
\K
feature, the regex engine :-
Cancels any previous search, so far
-
Adjusts the engine regex position to the position of
\K
so, right after the verse number and before any mixed range of tabulations or space characters ([\x20\t]+
) -
Re-start the search of the final part
[\x20\t]+
-
And leads to the following regex S/R :
-
FIND
^.+ \d+:\d+\K[\x20\t]+
-
REPLACE
\t
IMPORTANT : If you’re using this second regex S/R with the
\K
feature, the replacement MUST be a global one, using theReplace All
button. You CANNOT use the step by step replacement with theReplace
button !Best regards,
guy038
-
-
@guy038 Thanx for your kind dedication and patience in helping me. I can now do in a couple of minutes what was taking days.
Starting again armed with the new MACROs is indeed a new beginning.
I wish you and Terry every blessings -
Hello, @robert-or-janet-diebel,
Regarding my last regex to normalize “space” characters to ONE tabulation char, only, I thought of a better regex S/R, which should speed up all the process as it skips all the correct lines containing just one tabulation character !
My very-Best-Novel 20:10 Mutanga yaYuta mufume Nashone mwanaAminatave. My very-Best-Novel 20:10 Mutanga yaYuta mufume Nashone mwanaAminatave. My very-Best-Novel 20:10 Mutanga yaYuta mufume Nashone mwanaAminatave. My very-Best-Novel 20:10 Mutanga yaYuta mufume Nashone mwanaAminatave. My very-Best-Novel 20:10 Mutanga yaYuta mufume Nashone mwanaAminatave.
-
FIND
^.+ \d+:\d+\K(?:[\x20\t]{2,}|\x20)
-
REPLACE
\t
-
Click on the
Replace All
button
The third line is skipped as it just contains
1
tab char and we get the OUTPUT text :My very-Best-Novel 20:10 Mutanga yaYuta mufume Nashone mwanaAminatave. My very-Best-Novel 20:10 Mutanga yaYuta mufume Nashone mwanaAminatave. My very-Best-Novel 20:10 Mutanga yaYuta mufume Nashone mwanaAminatave. My very-Best-Novel 20:10 Mutanga yaYuta mufume Nashone mwanaAminatave. My very-Best-Novel 20:10 Mutanga yaYuta mufume Nashone mwanaAminatave.
Note the use of a non-capturing group
(?:......)
as we do not need the contents of this group, either, in the search and/or the replace regex !Best Regards,
guy038
-
-
@guy038 Thank You very much for the extra effort.