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=ZealandWith Regular expression checked, I have tried:
[A-Z].*[A-Z]But that also brings up instances like:
Christmas we're going to LaplandI 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 inThanks a lot in advance!
-
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
\Kresets 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
1upper-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!
Hello! It looks like you're interested in this conversation, but you don't have an account yet.
Getting fed up of having to scroll through the same posts each visit? When you register for an account, you'll always come back to exactly where you were before, and choose to be notified of new replies (either via email, or push notification). You'll also be able to save bookmarks and upvote posts to show your appreciation to other community members.
With your input, this post could be even better 💗
Register Login