import re
regex = re.compile(r"\"error_description\"\:\"(?P<error_description>.\w+\s+\w+)")
test_str = ("\"error\":\"invalid_grant\",\"error_description\":\"authentication failure\"}\"\n"
"[WARN ] 2016-06-15 17:55:03,835 ajp-bio-8009-exec-147: failed to unmarshall the body of the response:\n"
"{\"error\":\"invalid_grant\",\"error_description\":\"authentication failure\"}\n"
"javax.xml.bind.UnmarshalException\n"
" - with linked exception:\n"
"[org.xml.sax.SAXParseException; lineNumber: 1; columnNumber: 1; Content is not allowed in prolog.]\n"
" at javax.xml.bind.helpers.AbstractUnmarshallerImpl.createUnmarshalException(AbstractUnmarshallerImpl.java:335)\n"
" at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.createUnmarshalException(UnmarshallerImpl.java:514)\n"
" at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal0(UnmarshallerImpl.java:215)\n"
" at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal(UnmarshallerImpl.java:184)\n"
" at javax.xml.bind.helpers.AbstractUnmarshallerImpl.unmarshal(AbstractUnmarshallerImpl.java:157)\n"
" at javax.xml.bind.helpers.AbstractUnmarshallerImpl.unmarshal(AbstractUnmarshallerImpl.java:214)\n"
" at com.cisco.hn.cs.common.http.client.RestClientErrorHandler.handleError(RestClientErrorHandler.java:41)\n"
" at org.springframework.web.client.RestTemplate.handleResponseError(RestTemplate.java:486)\n"
" at org.springframework.web.client.RestTemplate.doExecute(RestTemplate.java:443)\n"
" at org.springframework.web.client.RestTemplate.execute(RestTemplate.java:401)\n"
" at org.springframework.web.client.Res[WARN ] 2016-06-15 17:55:03,835 ajp-bio-8009-exec-147: failed to unmarshall the body of the response:\n"
"{\"error\":\"invalid_grant\",\"error_description\":\"authentication failure\"}\n"
"javax.xml.bind.UnmarshalException\n"
" - with linked exception:\n"
"[org.xml.sax.SAXParseException; lineNumber: 1; columnNumber: 1; Content is not allowed in prolog.]\n"
" at javax.xml.bind.helpers.AbstractUnmarshallerImpl.createUnmarshalException(AbstractUnmarshallerImpl.java:335)\n"
" at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.createUnmarshalException(UnmarshallerImpl.java:514)\n"
" at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal0(UnmarshallerImpl.java:215)\n"
" at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal(UnmarshallerImpl.java:184)\n"
" at javax.xml.bind.helpers.AbstractUnmarshallerImpl.unmarshal(AbstractUnmarshallerImpl.java:157)\n"
" at javax.xml.bind.helpers.AbstractUnmarshallerImpl.unmarshal(AbstractUnmarshallerImpl.java:214)\n"
" at com.cisco.hn.cs.common.http.client.RestClientErrorHandler.handleError(RestClientErrorHandler.java:41)\n"
" at org.springframework.web.client.RestTemplate.handleResponseError(RestTemplate.java:486)\n"
" at org.springframework.web.client.RestTemplate.doExecute(RestTemplate.java:443)\n"
" at org.springframework.web.client.RestTemplate.execute(RestTemplate.java:401)\n"
" at org.springframework.web.client.Res")
matches = regex.finditer(test_str)
for match_num, match in enumerate(matches, start=1):
print(f"Match {match_num} was found at {match.start()}-{match.end()}: {match.group()}")
for group_num, group in enumerate(match.groups(), start=1):
print(f"Group {group_num} found at {match.start(group_num)}-{match.end(group_num)}: {group}")
Please keep in mind that these code samples are automatically generated and are not guaranteed to work. If you find any syntax errors, feel free to submit a bug report. For a full regex reference for Python, please visit: https://docs.python.org/3/library/re.html