import re
regex = re.compile(r"(?s)<\?.*?>", flags=re.MULTILINE)
test_str = ("<?xml version='1.0' encoding='utf-8'?>\n"
"<!--\n"
" Licensed to the Apache Software Foundation (ASF) under one or more\n"
" contributor license agreements. See the NOTICE file distributed with\n"
" this work for additional information regarding copyright ownership.\n"
" The ASF licenses this file to You under the Apache License, Version 2.0\n"
" (the \"License\"); you may not use this file except in compliance with\n"
" the License. You may obtain a copy of the License at\n\n"
" http://www.apache.org/licenses/LICENSE-2.0\n\n"
" Unless required by applicable law or agreed to in writing, software\n"
" distributed under the License is distributed on an \"AS IS\" BASIS,\n"
" WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n"
" See the License for the specific language governing permissions and\n"
" limitations under the License.\n"
"-->\n")
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