# coding=utf8
# the above tag defines encoding for this document and is for Python 2.x compatibility
import re
regex = r"(?:[a-zA-Z\s]*:)\s*(.*)"
test_str = ("Type : Requirement\n"
"State : Implemented\n"
"Release : 3.1.9 / 3.4.0 *1\n"
"The AFTN Message processing shall base on the following external documents:\n"
"[ICAO_1] ICAO Annex 10\n"
"[ICAO_2] ICAO Doc 4444\n"
"[ICAO_3] ICAO Doc 7030\n"
"[ICAO_4] ICAO Doc 4444 PANS ATM Amendment No1 *1\n\n\n"
"[EURO_1] ADEXP documentation\n"
"[EURO_2] IFPS user manual\n\n\n"
"[CFMU_1] CFMU_AIC 12.08\n"
"[CFMU_2] CFMU 2012 REQUIREMENTS V1.42 *1\n"
"[CFMU_3] CFMU INTERFACE MANUAL FOR ICAO 2012 V1.32 *1\n\n\n"
"[AIDA_1] ICD FPL AIDA AFPS v40\n\n\n"
"[FIXM_1] http://www.fixm.aero/content/fixm-core-releases (FIXM v1.1)\n\n\n"
"*1 Due to mutually contradictory between ICAO and CFMU requirements, the documents from CFMU has a higher priority.")
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