Regex in Python - Substring with single "re.sub" call
Question: I am looking into the Regex function in Python. As part of this, I am trying
to extract a substring from a string.

For instance, assume I have the string:

    
    
    <place of birth="Stockholm">
    

Is there a way to extract Stockholm with a **single** regex call?

So far, I have:

    
    
    location_info = "<place of birth="Stockholm">"
    
    #Remove before
    location_name1 = re.sub(r"<place of birth=\"", r"", location_info)
    #location_name1 --> Stockholm">
    
    #Remove after
    location_name2 = re.sub(r"\">", r"", location_name1)
    #location_name2 --> Stockholm
    

Any advice on how to extract the string Stockholm, without using two "re.sub"
calls is highly appreciated.


Answer: Sure, you can match the beginning up to the double quotes, and match and
capture all the characters other than double quotes after that:

    
    
    import re
    p = re.compile(r'<place of birth="([^"]*)')
    location_info = "<place of birth=\"Stockholm\">"
    match = p.search(location_info)
    if match:
        print(match.group(1))
    

See [IDEONE demo](http://ideone.com/fIYLY0)

The `<place of birth="` is matched as a literal, and `([^"]*)` is a capture
group 1 matching 0 or more characters other than `"`. The value is accessed
with `.group(1)`.

Here is a [**REGEX demo**](https://regex101.com/r/pP4fD6/2).

