# coding=utf8
# the above tag defines encoding for this document and is for Python 2.x compatibility
import re
regex = r"^(\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}.\d{3}(?:Z|[+-]\d{2}:\d{2}))\s*(\w+)\s*(\d*)\s*---\s*\[\s*([a-zA-Z0-9\._-]+)?\]\s*([^\s]+)\s*:\s*([^\n]+)$"
test_str = ("2023-02-13T20:51:06.372+05:30 INFO 28357 --- [ main] com.example.demo.DemoApplication : Starting DemoApplication using Java 17.0.2 with PID 28357 (/Users/snehangshub/Documents/Experiments/demo/build/classes/java/main started by snehangshub in /Users/snehangshub/Documents/Experiments/demo)\n"
"2023-02-13T20:51:06.373+05:30 INFO 28357 --- [ main] com.example.demo.DemoApplication : No active profile set, falling back to 1 default profile: \"default\"\n"
"2023-02-13T20:51:06.715+05:30 INFO 28357 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat initialized with port(s): 8080 (http)\n"
"2023-02-13T20:51:06.721+05:30 INFO 28357 --- [ main] o.apache.catalina.core.StandardService : Starting service [Tomcat]\n"
"2023-02-13T20:51:06.721+05:30 INFO 28357 --- [ main] o.apache.catalina.core.StandardEngine : Starting Servlet engine: [Apache Tomcat/10.1.5]\n"
"2023-02-13T20:51:06.763+05:30 INFO 28357 --- [ main] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring embedded WebApplicationContext\n"
"2023-02-13T20:51:06.764+05:30 INFO 28357 --- [ main] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 371 ms\n"
"2023-02-13T20:51:06.899+05:30 INFO 28357 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat started on port(s): 8080 (http) with context path ''\n"
"2023-02-13T20:51:06.903+05:30 INFO 28357 --- [ main] com.example.demo.DemoApplication : Started DemoApplication in 0.684 seconds (process running for 0.832)\n"
"2023-02-13T20:51:24.855+05:30 INFO 28357 --- [nio-8080-exec-1] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring DispatcherServlet 'dispatcherServlet'\n"
"2023-02-13T20:51:24.855+05:30 INFO 28357 --- [nio-8080-exec-1] o.s.web.servlet.DispatcherServlet : Initializing Servlet 'dispatcherServlet'\n"
"2023-02-13T20:51:24.858+05:30 INFO 28357 --- [nio-8080-exec-1] o.s.web.servlet.DispatcherServlet : Completed initialization in 2 ms\n"
"2023-02-13T19:09:07.379Z INFO 1 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat started on port(s): 8080 (http) with context path ''")
matches = re.finditer(regex, test_str, re.MULTILINE)
for matchNum, match in enumerate(matches, start=1):
print ("Match {matchNum} was found at {start}-{end}: {match}".format(matchNum = matchNum, start = match.start(), end = match.end(), match = match.group()))
for groupNum in range(0, len(match.groups())):
groupNum = groupNum + 1
print ("Group {groupNum} found at {start}-{end}: {group}".format(groupNum = groupNum, start = match.start(groupNum), end = match.end(groupNum), group = match.group(groupNum)))
# Note: for Python 2.7 compatibility, use ur"" to prefix the regex and u"" to prefix the test string and substitution.
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