Hello, @jakang-chen and All,
Seemingly, you need to search for any range of consecutive lowercase letters a, embedded between the uppercase letters A and B and replace each of them with the lowercase letter c
Here is a possible solution :
So, given this sample text, below :
aaa AB CB AC BC AB aaa aaa AaB CaB AaC BaC AaB aaa aaa AaaB CaaB AaaC BaaC AaaB aaa aaa AaaaB CaaaB AaaaC BaaaC AaaaB aaa aaa AaaaaB CaaaaB AaaaaC BaaaaC AaaaaB aaa aaa AaaaaaB CaaaaaB AaaaaaC BaaaaaC AaaaaaB aaa aaa AaaaaaaB CaaaaaaB AaaaaaaC BaaaaaaC AaaaaaaB aaa aaa AaaaaaaaB CaaaaaaaB AaaaaaaaC BaaaaaaaC AaaaaaaaB aaa aaa AaaaaaaaaB CaaaaaaaaB AaaaaaaaaC BaaaaaaaaC AaaaaaaaaB aaa aaa AaaaaaaaaaB CaaaaaaaaaB AaaaaaaaaaC BaaaaaaaaaC AaaaaaaaaaB aaa aaa AaaaaaaaaaaB CaaaaaaaaaaB AaaaaaaaaaaC BaaaaaaaaaaC AaaaaaaaaaaB aaaIf you run this regex S/R :
SEARCH (?-si)(A\K|\G)a(?=\w*?B)
REPLACE c
You should get your expected text :
aaa AB CB AC BC AB aaa aaa AcB CaB AaC BaC AcB aaa aaa AccB CaaB AaaC BaaC AccB aaa aaa AcccB CaaaB AaaaC BaaaC AcccB aaa aaa AccccB CaaaaB AaaaaC BaaaaC AccccB aaa aaa AcccccB CaaaaaB AaaaaaC BaaaaaC AcccccB aaa aaa AccccccB CaaaaaaB AaaaaaaC BaaaaaaC AccccccB aaa aaa AcccccccB CaaaaaaaB AaaaaaaaC BaaaaaaaC AcccccccB aaa aaa AccccccccB CaaaaaaaaB AaaaaaaaaC BaaaaaaaaC AccccccccB aaa aaa AcccccccccB CaaaaaaaaaB AaaaaaaaaaC BaaaaaaaaaC AcccccccccB aaa aaa AccccccccccB CaaaaaaaaaaB AaaaaaaaaaaC BaaaaaaaaaaC AccccccccccB aaaIt’s easy to verify that contents have changed, only between the individual ranges A............B
Notes :
The in-line modifier (?-i) ensures that the search will be processed in a NON-insentive way
The in-line modifier (?-s) forces the regex engine to consider any dot ( . ) as representing a single standard character ( and not an EOL char )
The A obvioulsy matches the litteral uppercase letter A
Then the \K syntax immediately cancels any previous match and resets the regex engine working position
If a letter A is not found, the second part of the alternative, \G, which represents the zero-length location right after the previous match, is invoked
Now, the regex engine tries to match the lower-case letter a, but ONLY IF the positive look-ahead (?=\w*?B) is true, i.e this letter is followed by any range, even null, of word characters, till an upper-case letter B
If so, it is simply replaced with the lower-case letter c
Best Regards,
guy038