import re
regex = re.compile(r"<REMITReceipt(.|\n)*?<errorCount>0(.|\n)*?\/REMITReceipt>")
test_str = ("\n"
" \n"
"=== Receipt_20150922_REMITTable1_V1_A0000668C.SI_1.xml.asc\n\n\n"
"<REMITReceipt xmlns=\"http://www.acer.europa.eu/REMIT/REMITReceiptSchema_V1.xsd\">\n"
" <receiptTimestamp>2015-09-22T14:25:04.009+02:00</receiptTimestamp>\n"
" <rrmId>\n"
" <acer>A0000668C.SI</acer>\n"
" </rrmId>\n"
" <receiptType>validation</receiptType>\n"
" <validationReceipt>\n"
" <reportedFilename>20150922_REMITTable1_V1_A0000668C.SI_1.xml.asc.pgp</reportedFilename>\n"
" <reportedFileChecksum>6445BEC781F4000C7F16F8685103B2D2D4DC500B</reportedFileChecksum>\n"
" <errorCount>0</errorCount>\n"
" <globalReceiptItem>\n"
" <logicalRecordIdentifier>FWG_L_Sep_15</logicalRecordIdentifier>\n"
" <logicalRecordType>CONTRACT</logicalRecordType>\n"
" <status>Accepted</status>\n"
" </globalReceiptItem>\n"
" </validationReceipt>\n"
"</REMITReceipt>\n\n\n"
"=== Receipt_20150922_REMITTable1_V1_A0000668C.SI_10.xml.asc \n\n\n"
"<REMITReceipt xmlns=\"http://www.acer.europa.eu/REMIT/REMITReceiptSchema_V1.xsd\">\n"
" <receiptTimestamp>2015-09-24T09:35:07.530+02:00</receiptTimestamp>\n"
" <rrmId>\n"
" <acer>A0000668C.SI</acer>\n"
" </rrmId>\n"
" <receiptType>validation</receiptType>\n"
" <validationReceipt>\n"
" <reportedFilename>20150922_REMITTable1_V1_A0000668C.SI_10.xml.asc.pgp</reportedFilename>\n"
" <reportedFileChecksum>13F5F5D46DFC659380AD1A7982CC2F05E7E66D5E</reportedFileChecksum>\n"
" <errorCount>0</errorCount>\n"
" <globalReceiptItem>\n"
" <logicalRecordIdentifier>4</logicalRecordIdentifier>\n"
" <logicalRecordType>TRADE</logicalRecordType>\n"
" <status>Accepted</status>\n"
" <logicalRecordTimestamp>2015-07-14T13:12:16.223+02:00</logicalRecordTimestamp>\n"
" <logicalRecordChecksum>F6A488630A39390BE48420AFFD40ED7C82D20309</logicalRecordChecksum>\n"
" </globalReceiptItem>\n"
" <globalReceiptItem>\n"
" <logicalRecordIdentifier>3</logicalRecordIdentifier>\n"
" <logicalRecordType>TRADE</logicalRecordType>\n"
" <status>Accepted</status>\n"
" <logicalRecordTimestamp>2015-07-14T13:12:16.223+02:00</logicalRecordTimestamp>\n"
" <logicalRecordChecksum>026F539B94346186078BA906DE2F5A9F8B3E7F6E</logicalRecordChecksum>\n"
" </globalReceiptItem>\n"
" <globalReceiptItem>\n"
" <logicalRecordIdentifier>2</logicalRecordIdentifier>\n"
" <logicalRecordType>TRADE</logicalRecordType>\n"
" <status>Accepted</status>\n"
" <logicalRecordTimestamp>2015-07-14T08:46:40.513+02:00</logicalRecordTimestamp>\n"
" <logicalRecordChecksum>0F8253A2A3C55520E4D63959E77286CA1E95622B</logicalRecordChecksum>\n"
" </globalReceiptItem>\n"
" <globalReceiptItem>\n"
" <logicalRecordIdentifier>1</logicalRecordIdentifier>\n"
" <logicalRecordType>TRADE</logicalRecordType>\n"
" <status>Accepted</status>\n"
" <logicalRecordTimestamp>2015-07-14T08:46:37.223+02:00</logicalRecordTimestamp>\n"
" <logicalRecordChecksum>198B018687C9D97CD3EECFBACA7EA9F196B5B80F</logicalRecordChecksum>\n"
" </globalReceiptItem>\n"
" </validationReceipt>\n"
"</REMITReceipt>\n\n\n"
"=!== Receipt_20150922_REMITTable1_V1_A0000668C.SI_100.xml.asc ")
match = regex.search(test_str)
if match:
print(f"Match 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