In my Python code, I have the following string:
Here is my string with "\"The Address\", I want to replace only the selection between the brackes: {Here is my string between \"The Address\" and \"something\" else}. Thank you!
I would like to replace ALL occurrences of \"
that occur ONLY between curly brackets with "
. So my desired result is
Here is my string with "\"The Address\", I want to replace only the selection between the brackes: {Here is my string between "The Address" and "something" else}. Thank you!
I'm trying r'({.*)(\\")(.*})'
with a substitution of \1"\3
as given here: https://regex101.com/r/NWSDS6/1
However that is only selecting/replacing the very last \"
, how do I select/replace ALL of the occurrences between the curly braces?
EDIT after comment: Here is a variation of the string with an extra curly bracket after the word "replace":
Here is my string with "\"The Address\", I want to replace} only the selection between the brackes: {Here is my string between \"The Address\" and \"something\" else}. Thank you!
In this variation, the first two occurrences are selected however I would like them to be omitted as they do not occur BETWEEN TWO curly brackets. Is that possible?
CodePudding user response:
You can use this solution using lambda
:
s = r'Here is my string with "\"The Address\", I want to replace} only the selection between the brackes: {Here is my string between \"The Address\" and \"something\" else}. Thank you!'
s = re.sub(r'{[^}]*}', lambda m: m.group().replace(r'\"', '"'), s)
console.log(s)
Output:
Here is my string with "\"The Address\", I want to replace} only the selection between the brackes: {Here is my string between "The Address" and "something" else}. Thank you!
Here:
{[^}]*}
matches string between{...}
m.group().replace(r'\"', '"')
replaces all\"
with"
inside the matched text.