njminchin
njminchin

Reputation: 452

How to replace CapitalCaseWords with space-capital only where a defined prefix exists?

Reference info: Notepad++ Regex to replace capitalised-case words with space-capital

I need to add to this a requirement that the match contains a defined prefix. For example I want to replace:

"name": "CapitalCaseWords"
"name": "AnotherStringSentence"
"ThisStringShouldntBeReplaced"

with:

"name": "Capital Case Words"
"name": "Another String Sentence"
"ThisStringShouldntBeReplaced"

Where the prefix, in this case, is "name": ".

I'm using (?<=[a-z])(?=[A-Z]) but it's not working for prefix.

Regex101 example: https://regex101.com/r/IpmOnK/2

Upvotes: 2

Views: 58

Answers (1)

41686d6564
41686d6564

Reputation: 19641

With the "Match case" option ticked, you may replace:

("name":\ "[A-Z][a-z]+|(?<!^)\G)([A-Z][a-z]+)

With:

\1 \2

Demo.

Breakdown:

(                # Start of 1st capturing group.
    "name":\ "   # Match the prefix (including the double quotation).
    [A-Z][a-z]+  # Match an upper-case letter followed by one or more lower-case letters.
|                # Or:
    (?<!^)\G     # Assert position at the end of the previous match.
)                # End of 1st capturing group.
([A-Z][a-z]+)    # 2nd capturing group matching an upper-case letter followed by 
                 # one or more lower-case letters.

Upvotes: 4

Related Questions