Find&Replace pairs of capitalised words



  • Hi everyone,

    I have tried finding what I need in the forum but I am missing part of the regex syntax. Hope you guys can help!

    I need to:
    Find: pairs of capitalised words separated by a space
    Replace: space for equal sign
    For example:
    Adam Sandler --> Adam=Sandler
    New Zealand --> New=Zealand

    With Regular expression checked, I have tried:

    [A-Z].*[A-Z]
    

    But that also brings up instances like:

    Christmas we're going to Lapland
    

    I would need something to limit the number of words that can fit in between [A-Z]s. I tried the following to limit the number of characters to 4 (as an example):

    [A-Z] .*\w{4} [A-Z]
    

    But it didn’t work either.

    I just need to find pairs of capitalised words but I am struggling.

    It would also be great if you could suggest a code that won’t spit out results of ‘I’ as in the pronoun. For example:

    Overwatch I'm in
    

    Thanks a lot in advance!



  • @Joaquin-Bueno

    I assume this might work

    find what:([A-Z]\w+)(\h+)([A-Z]\w+)
    replace with:\1=\3
    make sure match case has been checked



  • Hello, @Joaquin Bueno, @ekopalypse and All,

    An alternate solution to @ekopalypse’s one could be :

    SEARCH (?-i)\u\w+\K\h+(?=\u\w*+(?!'))

    REPLACE =

    Notes :

    • First the (?-i) in-line modifier tells the regex engine to run the search in a NON-insensitive way

    • Then the part \u\w+ looks a word with a first upper-case letter followed with a non-null range of word characters

    • And the part \K resets the regex engine position of search and cancels the match, so far

    • Therefore, it searches, now, for a non-null range of horizontal blank characters \h+ ( Tabs and/or Spaces ) …

    • But ONLY IF  a double condition is true, due to the nested look-aheads structure :

      • It must be followed with an other word, of at least 1 upper-case letter, with possible subsequent word character(s), which…

      • Must not be followed with a single quote '. Thus, it eliminates cases of contractions such as “I’m, You’re, We’d,…

    • In order that the negative look-ahead (?!') works as expected, we need to place the + regex symbol, after the part \w*, to set this group of word char(s) as an atomic group and, therefore, prevent the regex engine from backtracking inside it !

    • Note, also, that all text matched by the regexes, in look-arounds, are never part of the overall match

    • In replacement, the blank character(s) matched is/are replaced with one equal sign =

    Best Regards,

    guy038



  • Thanks to both, @Ekopalypse and @guy038 :) :) :)

    Both codes worked like a charm.

    For anyone interested in these codes, @Ekopalypse 's code finds every space-separated pair of words starting with a capital letter , and @guy038 's code finds every space between words starting with a capital letter. Both were good for what I needed to do!


Log in to reply