import re
regex = re.compile(r"\.message\((?s)(.+?)\)\s*(?:\.(?:log|build)\(\)\s*)+\s*;")
test_str = (".message(\"Lorem ipsum dolor sit amet, consectetur adipiscing elit. :{}\" + id).build().log();\n\n"
".message(\"Lorem ipsum dolor: \" + object.getProperty()).someOtherMethod()).log();\n\n"
".message(\"Lorem ipsum dolor: \" + object.getProperty()).build().log();\n\n"
".message(\" pretium mi at iaculis. Quisque bibendum {} \"+ error.getMessage())\n"
".build().log();\n"
" \n"
".message(\"vel pharetra est urna eget justo. Nunc in dignissim velit. {} \"\n"
" + error.getMessage().getProperty())\n"
".build().log();\n"
" \n"
".message(\"Key : \" + oldEntry.getKey() + \" and Value: \" + oldEntry.getValue())\n"
".build()\n"
".log();\n\n"
".message(\"Curabitur vel facilisis ante.: \"\n"
" + information.getProfile().getId())\n"
".build()\n"
".log();")
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