Python regex to match all occurrences between curly brackets, not just the last occurence

Question:

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?

Asked By: Yob

||

Answers:

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.
Answered By: anubhava
Categories: questions Tags: ,
Answers are sorted by their score. The answer accepted by the question owner as the best is marked with
at the top-right corner.