# coding=utf8
# the above tag defines encoding for this document and is for Python 2.x compatibility
import re
regex = r"(?'DateTime'\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}).*INFO *....(?'TaskName'\w+).*KMR200_(?'MR'\d).*Target Name: (?'TargetName'\w+\-\w+)\n.*Target Type\: (?'TargetType'\w+)\n.*Cycle Time: (?'CycleTime'\d+.\d+)"
test_str = ("2018-09-03 15:01:58,384 INFO [...PickTask@KMR200_6_Semiconductor_Fab_200] PickTask: Cycle Time: 24.178 seconds\n"
"2018-09-03 15:01:59,934 INFO [...PickTask@KMR200_6_Semiconductor_Fab_200] Target Name: BSK270M1-11\n"
"2018-09-03 15:01:59,934 INFO [...PickTask@KMR200_6_Semiconductor_Fab_200] Target Type: ERACK\n"
"2018-09-03 15:02:21,873 INFO [...PickTask@KMR200_6_Semiconductor_Fab_200] PickTask: Cycle Time: 21.952 seconds\n"
"2018-09-03 15:06:52,873 INFO [...PickTask@KMR200_6_Semiconductor_Fab_200] Target Name: BSK270M1-16\n"
"2018-09-03 15:06:52,873 INFO [...PickTask@KMR200_6_Semiconductor_Fab_200] Target Type: ERACK\n"
"2018-09-03 15:07:27,960 INFO [...PickTask@KMR200_6_Semiconductor_Fab_200] PickTask: Cycle Time: 35.298 seconds\n"
"2018-09-03 15:10:16,361 INFO [...PickTask@KMR200_6_Semiconductor_Fab_200] Target Name: BPRD26-1\n"
"2018-09-03 15:10:16,361 INFO [...PickTask@KMR200_6_Semiconductor_Fab_200] Target Type: TOOL\n"
"2018-09-03 15:10:41,524 INFO [...PickTask@KMR200_6_Semiconductor_Fab_200] PickTask: Cycle Time: 25.179 seconds\n"
"2018-09-03 15:14:42,750 INFO [...PickTask@KMR200_6_Semiconductor_Fab_200] Target Name: BSK270M1-1\n"
"2018-09-03 15:14:42,750 INFO [...PickTask@KMR200_6_Semiconductor_Fab_200] Target Type: ERACK\n"
"2018-09-03 15:15:06,262 INFO [...PickTask@KMR200_6_Semiconductor_Fab_200] PickTask: Cycle Time: 23.523 seconds\n"
"2018-09-03 15:17:25,399 INFO [...PickTask@KMR200_6_Semiconductor_Fab_200] Target Name: BSK270M1-6\n"
"2018-09-03 15:17:25,399 INFO [...PickTask@KMR200_6_Semiconductor_Fab_200] Target Type: ERACK\n"
"2018-09-03 15:17:46,641 INFO [...PickTask@KMR200_6_Semiconductor_Fab_200] PickTask: Cycle Time: 21.258 seconds\n"
"2018-09-03 15:21:22,709 INFO [...PickTask@KMR200_6_Semiconductor_Fab_200] Target Name: BSK270M1-2\n"
"2018-09-03 15:21:22,709 INFO [...PickTask@KMR200_6_Semiconductor_Fab_200] Target Type: ERACK\n"
"2018-09-03 15:21:43,892 INFO [...PickTask@KMR200_6_Semiconductor_Fab_200] PickTask: Cycle Time: 21.194 seconds\n"
"2018-09-03 15:26:42,393 INFO [...PickTask@KMR200_6_Semiconductor_Fab_200] Target Name: BSK270M1-7\n"
"2018-09-03 15:26:42,393 INFO [...PickTask@KMR200_6_Semiconductor_Fab_200] Target Type: ERACK\n"
"2018-09-03 15:27:06,475 INFO [...PickTask@KMR200_6_Semiconductor_Fab_200] PickTask: Cycle Time: 24.093 seconds\n"
"2018-09-03 15:28:29,608 INFO [...PickTask@KMR200_6_Semiconductor_Fab_200] Target Name: BSK270M1-5\n"
"2018-09-03 15:28:29,608 INFO [...PickTask@KMR200_6_Semiconductor_Fab_200] Target Type: ERACK\n"
"2018-09-03 15:01:58,384 INFO [...PickTask@KMR200_6_Semiconductor_Fab_200] PickTask: Cycle Time: 24.178 seconds\n"
"2018-09-03 15:01:59,934 INFO [...PickTask@KMR200_6_Semiconductor_Fab_200] Target Name: BSK270M1-11\n"
"2018-09-03 15:01:59,934 INFO [...PickTask@KMR200_6_Semiconductor_Fab_200] Target Type: ERACK\n"
"2018-09-03 15:02:21,873 INFO [...PickTask@KMR200_6_Semiconductor_Fab_200] PickTask: Cycle Time: 21.952 seconds\n"
"2018-09-03 15:06:52,873 INFO [...PickTask@KMR200_6_Semiconductor_Fab_200] Target Name: BSK270M1-16\n"
"2018-09-03 15:06:52,873 INFO [...PickTask@KMR200_6_Semiconductor_Fab_200] Target Type: ERACK\n"
"2018-09-03 15:07:27,960 INFO [...PickTask@KMR200_6_Semiconductor_Fab_200] PickTask: Cycle Time: 35.298 seconds\n"
"2018-09-03 15:10:16,361 INFO [...PickTask@KMR200_6_Semiconductor_Fab_200] Target Name: BPRD26-1\n"
"2018-09-03 15:10:16,361 INFO [...PickTask@KMR200_6_Semiconductor_Fab_200] Target Type: TOOL\n"
"2018-09-03 15:10:41,524 INFO [...PickTask@KMR200_6_Semiconductor_Fab_200] PickTask: Cycle Time: 25.179 seconds\n"
"2018-09-03 15:14:42,750 INFO [...PickTask@KMR200_6_Semiconductor_Fab_200] Target Name: BSK270M1-1\n"
"2018-09-03 15:14:42,750 INFO [...PickTask@KMR200_6_Semiconductor_Fab_200] Target Type: ERACK\n"
"2018-09-03 15:15:06,262 INFO [...PickTask@KMR200_6_Semiconductor_Fab_200] PickTask: Cycle Time: 23.523 seconds\n"
"2018-09-03 15:17:25,399 INFO [...PickTask@KMR200_6_Semiconductor_Fab_200] Target Name: BSK270M1-6\n"
"2018-09-03 15:17:25,399 INFO [...PickTask@KMR200_6_Semiconductor_Fab_200] Target Type: ERACK\n"
"2018-09-03 15:17:46,641 INFO [...PickTask@KMR200_6_Semiconductor_Fab_200] PickTask: Cycle Time: 21.258 seconds\n"
"2018-09-03 15:21:22,709 INFO [...PickTask@KMR200_6_Semiconductor_Fab_200] Target Name: BSK270M1-2\n"
"2018-09-03 15:21:22,709 INFO [...PickTask@KMR200_6_Semiconductor_Fab_200] Target Type: ERACK\n"
"2018-09-03 15:21:43,892 INFO [...PickTask@KMR200_6_Semiconductor_Fab_200] PickTask: Cycle Time: 21.194 seconds\n"
"2018-09-03 15:26:42,393 INFO [...PickTask@KMR200_6_Semiconductor_Fab_200] Target Name: BSK270M1-7\n"
"2018-09-03 15:26:42,393 INFO [...PickTask@KMR200_6_Semiconductor_Fab_200] Target Type: ERACK\n"
"2018-09-03 15:27:06,475 INFO [...PickTask@KMR200_6_Semiconductor_Fab_200] PickTask: Cycle Time: 24.093 seconds\n"
"2018-09-03 15:28:29,608 INFO [...PickTask@KMR200_6_Semiconductor_Fab_200] Target Name: BSK270M1-5\n"
"2018-09-03 15:28:29,608 INFO [...PickTask@KMR200_6_Semiconductor_Fab_200] Target Type: ERACK\n")
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