# coding=utf8
# the above tag defines encoding for this document and is for Python 2.x compatibility
import re
regex = r"([B,L]C[1,2,3]-C[5,6,7][A,E]0[1,2,4]-\d\d\d)|([B,L]C[1,2,3]-C[5,6,7]0[1,2,4]-\d\d\d)|([B,L]C[1,2,3]-C[5,6,7]E[1,2,5][0,5])|(LC3-C5E100)"
test_str = ("BC1-C502-111-305-G\n"
"LC1-C5E02-128\n"
"LC1-C5E02-128\n"
"BC1-C502-111-G\n"
"LC1-C5E04-128\n"
"BC1-C504-111-305-G\n"
"LC1-C5E04-328\n"
"BC1-C504-111-G\n"
"LC1-C5E04-122\n"
"BC1-C5E01-111\n"
"LC1-C5E04-322\n"
"BC1-C5E01-111-500-G\n"
"LC1-C604-128\n"
"BC1-C5E02-111\n"
"LC1-C604-328\n"
"BC1-C5E02-111-100\n"
"LC1-C604-122\n"
"BC1-C5E02-111-100-G\n"
"LC1-C604-322\n"
"BC1-C5E02-111-305-G\n"
"LC1-C6A04-121\n"
"BC1-C5E02-128\n"
"LC1-C6A04-621\n"
"BC1-C5E02-128-305-G\n"
"LC1-C6A04-626\n"
"BC1-C5E02-328\n"
"LC1-C6A04-627\n"
"BC1-C5E02-328-305-G\n"
"LC1-C6A04-622\n"
"BC1-C5E04-111\n"
"LC1-C704-621\n"
"BC1-C5E04-111-100\n"
"LC1-C704-627\n"
"BC1-C5E04-111-100-G\n"
"LC1-C704-626\n"
"BC1-C5E04-111-305-G\n"
"LC1-C704-622\n"
"BC1-C5E04-128\n"
"LC1-C5E01-100\n"
"BC1-C5E04-128-100\n"
"LC1-C5E02-111\n"
"BC1-C5E04-128-100-G\n"
"LC1-C5E02-111-100\n"
"BC1-C5E04-128-305-G\n"
"LC1-C5E02-121\n"
"BC1-C5E04-311\n"
"BC1-C5E04-311-305-G\n"
"LC1-C5E02-311\n"
"BC1-C5E04-328\n"
"LC1-C5E02-321\n"
"BC1-C5E04-328-305-G\n"
"LC1-C5E04-111\n"
"BC3-C5E02-339\n"
"LC1-C5E04-111-100\n"
"BC3-C5E02-339-500-G\n"
"LC1-C5E04-113\n"
"BC3-C5E04-139\n"
"LC1-C5E04-121\n"
"BC3-C5E04-139-100\n"
"LC1-C5E04-121-100\n"
"BC3-C5E04-139-100-G\n"
"LC1-C5E04-124\n"
"BC3-C5E04-139-305-G\n"
"LC1-C5E04-126\n"
"BC3-C5E04-339\n"
"LC1-C5E04-127\n"
"BC3-C5E04-339-305-G\n"
"LC1-C5E04-311\n"
"BC3-C5E04-359\n"
"LC1-C5E04-321\n"
"BC3-C5E04-359-305-G\n"
"LC1-C5E04-327\n"
"LC2-C5E04-111\n"
"LC2-C5E04-121\n"
"LC2-C5E04-121-100\n"
"LC1-C604-111\n"
"LC1-C5E02-122\n"
"LC1-C604-121\n"
"LC1-C604-126\n"
"LC1-C604-127\n"
"LC1-C604-311\n"
"LC1-C5E02-322\n"
"LC1-C604-326\n"
"LC1-C604-327\n"
"LC2-C604-121\n"
"LC1-C5E04-112\n"
"LC1-C6A04-611\n"
"LC1-C5E100-111\n"
"LC1-C5E04-114\n"
"LC1-C5E100-121\n"
"LC1-C5E04-118\n"
"LC1-C5E100-311\n"
"LC1-C5E100-321\n"
"LC1-C5E10-111\n"
"LC1-C5E10-121\n"
"LC1-C5E10-311\n"
"LC1-C5E10-321\n"
"LC1-C5E25-111\n"
"LC1-C5E25-121\n"
"LC1-C5E25-311\n"
"LC1-C5E25-321\n"
"LC1-C5E50-111\n"
"LC1-C5E50-121\n"
"LC1-C5E50-311\n"
"LC1-C5E50-321\n"
"LC3-C5E02-339\n"
"LC3-C5E04-129\n"
"LC3-C5E04-139\n"
"LC3-C5E04-139-100\n"
"LC3-C5E04-159\n"
"LC3-C5E04-189\n"
"LC1-C604-112\n"
"LC1-C604-114\n"
"LC1-C604-118\n"
"LC1-C604-321\n"
"LC1-C6A04-612\n"
"LC2-C604-111\n"
"LC3-C5E04-169\n"
"LC3-C5E04-179\n"
"LC3-C5E04-329\n"
"LC3-C5E04-339\n"
"LC3-C5E04-359\n"
"LC3-C5E04-369\n"
"LC3-C5E04-379\n"
"LC3-C5E04-389\n"
"LC3-C5E100-139\n"
"LC3-C5E100-339\n"
"LC3-C5E10-139\n"
"LC3-C5E10-339\n"
"LC3-C5E25-139\n"
"LC3-C5E25-339\n"
"LC3-C5E50-139\n"
"LC3-C5E50-339\n"
"LC3-C604-129\n"
"LC3-C604-139\n"
"LC3-C604-329\n"
"LC3-C604-339\n"
"BC1-C502-111-305-G\n"
"LC1-C5E02-128\n"
"LC1-C5E02-128\n"
"BC1-C502-111-G\n"
"LC1-C5E04-128\n"
"BC1-C504-111-305-G\n"
"LC1-C5E04-328\n"
"BC1-C504-111-G\n"
"LC1-C5E04-122\n"
"LC1-C5E04-322\n"
"LC1-C604-128\n"
"BC1-C5E02-111\n"
"LC1-C604-328\n"
"BC1-C5E02-111-100\n"
"LC1-C604-122\n"
"BC1-C5E02-111-100-G\n"
"LC1-C604-322\n"
"BC1-C5E02-111-305-G\n"
"LC1-C6A04-121\n"
"BC1-C5E02-128\n"
"LC1-C6A04-621\n"
"BC1-C5E02-128-305-G\n"
"LC1-C6A04-626\n"
"BC1-C5E02-328\n"
"LC1-C6A04-627\n"
"LC1-C6A04-622\n"
"LC1-C704-621\n"
"BC1-C5E04-111-100\n"
"LC1-C704-627\n"
"LC1-C704-626\n"
"BC1-C5E04-111-305-G\n"
"LC1-C704-622\n"
"BC1-C5E04-128\n"
"LC1-C5E01-100\n"
"BC1-C5E04-128-100\n"
"LC1-C5E02-111\n"
"BC1-C5E04-128-100-G\n"
"LC1-C5E02-111-100\n"
"BC1-C5E04-128-305-G\n"
"LC1-C5E02-121\n"
"BC1-C5E04-311\n"
"BC1-C5E04-311-305-G\n"
"LC1-C5E02-311\n"
"BC1-C5E04-328\n"
"LC1-C5E02-321\n"
"BC1-C5E04-328-305-G\n"
"LC1-C5E04-111\n"
"LC1-C5E04-111-100\n"
"BC3-C5E02-339-500-G\n"
"LC1-C5E04-113\n"
"LC1-C5E04-121\n"
"BC3-C5E04-139-100\n"
"LC1-C5E04-121-100\n"
"BC3-C5E04-139-100-G\n"
"LC1-C5E04-124\n"
"BC3-C5E04-139-305-G\n"
"LC1-C5E04-126\n"
"LC1-C5E04-127\n"
"BC3-C5E04-339-305-G\n"
"LC1-C5E04-311\n"
"LC1-C5E04-321\n"
"BC3-C5E04-359-305-G\n"
"LC1-C5E04-327\n"
"LC2-C5E04-111\n"
"LC2-C5E04-121\n"
"LC2-C5E04-121-100\n"
"LC1-C604-111\n"
"LC1-C604-121\n"
"LC1-C604-126\n"
"LC1-C604-127\n"
"LC1-C604-311\n"
"LC1-C604-326\n"
"LC1-C604-327\n"
"LC2-C604-121\n"
"LC1-C6A04-611\n"
"LC1-C5E100-111\n"
"LC1-C5E100-121\n"
"LC1-C5E100-311\n"
"LC1-C5E100-321\n"
"LC1-C5E10-111\n"
"LC1-C5E10-121\n"
"LC1-C5E10-311\n"
"LC1-C5E10-321\n"
"LC1-C5E25-111\n"
"LC1-C5E25-121\n"
"LC1-C5E25-311\n"
"LC1-C5E25-321\n"
"LC1-C5E50-111\n"
"LC1-C5E50-121\n"
"LC1-C5E50-311\n"
"LC1-C5E50-321\n"
"LC3-C5E02-339\n"
"LC3-C5E04-129\n"
"LC3-C5E04-139\n"
"LC3-C5E04-139-100\n"
"LC3-C5E04-159\n"
"LC3-C5E04-189\n"
"LC3-C5E04-329\n"
"LC3-C5E04-339\n"
"LC3-C5E04-359\n"
"LC3-C5E04-379\n"
"LC3-C5E04-389\n"
"LC3-C5E100-139\n"
"LC3-C5E100-339\n"
"LC3-C5E10-139\n"
"LC3-C5E10-339\n"
"LC3-C5E25-139\n"
"LC3-C5E25-339\n"
"LC3-C5E50-139\n"
"LC3-C5E50-339\n"
"LC3-C604-129\n"
"LC3-C604-139\n"
"LC3-C604-329\n"
"LC3-C604-339\n"
"BC1-C5E01-111-500-G \n"
"BC1-C5E02-328-305-G \n"
"BC1-C5E04-111-100-G ")
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