Hello, @jens-ubert, @ekopalypse, @alan-kilborn, @peterjones, and All,
Jens, welcome to the N++ community !
Seemingly, I understand that your goal is to obtain the B) syntax, leaving the C) and D syntaxes untouched. In other words, you just would like that any A) syntax be replaced with the B syntax, wouldn’t you ?
Thus, we have to grab any A syntax, specifically, and change it into the B one
Comparing all syntaxes, it comes that only the A syntax does not contain any single quote character, ' nor the $ symbol, between square brackets. We can add the rule that the variable name, before the square brackets does not contain any single quote, too !
On the other hand, the part before square brackets does not change, when moving from the A to the B syntax. So, we just need to store the text, between square brackets, and surround it with single quotes, during replacement !
So, a possible regex would be :
SEARCH \s\$[^'\r\n]+\[\K([^'$\r\n]+)(?=\])
REPLACE '\1'
Notes :
The beginning of the regex \s searches for the general kind of space character ( the Space or Tabulation chars, the \n or \r line break chars and some others… )
Then the part \$ looks for the literal regex symbol $
Now, the syntax [^'\r\n]+\[ searches the greatest non-null range of consecutive characters, different from a single quote and line-breaks chars, followed by a literal opening square bracket
The special syntax \K cancels any match and resets the regex engine working position
Thus, the part ([^'$\r\n]+) tries, now, to match the greatest non-null range of consecutive characters, either different from a single quote, a dollar and line-breaks chars, stored as group 1, due to the outer parentheses
But ONLY IF the look-ahead (?=\]) is true, i.e. if this range is followed with an ending literal square bracket !
Finally, in replacement, the \1 syntax represents all group 1 contents, surrounded with single quotes
Best Regards,
guy038