# coding=utf8
# the above tag defines encoding for this document and is for Python 2.x compatibility
import re
regex = r"Size: (?:Age_Youth|[a-zA-Z0-9]+)(?:[ \t]*(?:or|[-/?])[ \t]*[a-zA-Z0-9]+)+"
test_str = ("Size: 10,\n"
"Size: 12,\n"
"Size: 12M,\n"
"Size: 13-15,\n"
"Size: 14,\n"
"Size: 14.5,\n"
"Size: 15,\n"
"Size: 15.5,\n"
"Size: 16,\n"
"Size: 16.5,\n"
"Size: 17,\n"
"Size: 17.5,\n"
"Size: 18,\n"
"Size: 18.5,\n"
"Size: 18/24,\n"
"Size: 18M,\n"
"Size: 19,\n"
"Size: 19.5,\n"
"Size: 1X,\n"
"Size: 2,\n"
"Size: 2 - 18/20,\n"
"Size: 20,\n"
"Size: 20.5,\n"
"Size: 22,\n"
"Size: 22-24,\n"
"Size: 2-3-4-43621,\n"
"Size: 2-3T-4T,\n"
"Size: 24,\n"
"Size: 24\",\n"
"Size: 2-4-6,\n"
"Size: 2-4-6-8-10-12-14-16-18-20,\n"
"Size: 24M,\n"
"Size: 26,\n"
"Size: 28\",\n"
"Size: 28W,\n"
"Size: 29W,\n"
"Size: 2T,\n"
"Size: 2T/3T,\n"
"Size: 2T/3T-4T,\n"
"Size: 2T-3T-4T,\n"
"Size: 2T-3T-4T-43621,\n"
"Size: 2T-3T-4T-43621-7,\n"
"Size: 2T-3T-4T-5/6T,\n"
"Size: 2T-3T-4T-5T,\n"
"Size: 2T-3T-4T-5T-6T,\n"
"Size: 2T-4T-43621,\n"
"Size: 2T-4T-5/6T,\n"
"Size: 2T-4T-6T,\n"
"Size: 2X,\n"
"Size: 2XL,\n"
"Size: 3,\n"
"Size: 3 - 22/24,\n"
"Size: 30,\n"
"Size: 30-32-34-36,\n"
"Size: 30-32-34-36-38,\n"
"Size: 30-32-34-36-38-40,\n"
"Size: 30-32-34-36-38-40-42-44,\n"
"Size: 30-32-34-36-38-40-42-44-28,\n"
"Size: 30-32-34-36-38-40-42-44-46,\n"
"Size: 30-32-34-36-38-40-42-44-46-48,\n"
"Size: 30-32-34-36-38-40-42-44-48,\n"
"Size: 30-32-34-36-38-42,\n"
"Size: 30-32-34-36-40-48,\n"
"Size: 30-32-34-38,\n"
"Size: 30-32-38,\n"
"Size: 30-34-36-38-40,\n"
"Size: 30-34-38,\n"
"Size: 30W,\n"
"Size: 30W or 50W,\n"
"Size: 30W or 50W-32W-34W-36W-38W-40W-42W-44W-46W-48W,\n"
"Size: 31W,\n"
"Size: 32,\n"
"Size: 32-34-36-38,\n"
"Size: 32-34-36-38-40,\n"
"Size: 32-34-36-38-40-42-44-46-48-50,\n"
"Size: 32-34-36-38-44,\n"
"Size: 32W,\n"
"Size: 33W,\n"
"Size: 34,\n"
"Size: 34-36-38-40-42-44-46-48-50,\n"
"Size: 34-36-58,\n"
"Size: 34-56-58,\n"
"Size: 34-56-58-60-62,\n"
"Size: 34-56-58-60-62-64,\n"
"Size: 34W,\n"
"Size: 34W\",\n"
"Size: 35W,\n"
"Size: 35W\",\n"
"Size: 36,\n"
"Size: 36-38-40-42-44-46-48-50,\n"
"Size: 36-38-40-42-44-46-48-50-52-54,\n"
"Size: 36-38-40-42-44-46-48-50-52-54-56,\n"
"Size: 36-38-40-42-44-46-48-50-52-54-56-58,\n"
"Size: 36W,\n"
"Size: 37W,\n"
"Size: 37W\",\n"
"Size: 38,\n"
"Size: 38-40-42-44-46-48-50,\n"
"Size: 38-40-42-44-46-48-50-52-54,\n"
"Size: 38-40-42-44-46-48-50-52-54-56,\n"
"Size: 38-40-42-44-46-48-50-52-54-56-58,\n"
"Size: 38W,\n"
"Size: 3T,\n"
"Size: 3T-4T-5T,\n"
"Size: 3X,\n"
"Size: 3XL,\n"
"Size: 4,\n"
"Size: 4 - 26/28,\n"
"Size: 40,\n"
"Size: 40-42,\n"
"Size: 40-42-44-46-48,\n"
"Size: 40-42-44-46-48-50-52,\n"
"Size: 40-42-44-46-48-50-52-54,\n"
"Size: 40W,\n"
"Size: 40W\",\n"
"Size: 4-10-12,\n"
"Size: 41548,\n"
"Size: 42,\n"
"Size: 42-44-46-48-50,\n"
"Size: 42-44-46-48-50-52,\n"
"Size: 42-44-46-48-50-52-54-56-58,\n"
"Size: 42-44-46-48-50-52-54-56-58-60,\n"
"Size: 42-44-46-48-50-52-56-54,\n"
"Size: 42W,\n"
"Size: 43619-06-d?c,\n"
"Size: 43619-06-d?c-d?c-18,\n"
"Size: 43619-06-dc-dc-18,\n"
"Size: 43621,\n"
"Size: 43621\",\n"
"Size: 43621-7,\n"
"Size: 43715,\n"
"Size: 43778,\n"
"Size: 44,\n"
"Size: 44\",\n"
"Size: 4-43621-7,\n"
"Size: 44-46-48,\n"
"Size: 44W,\n"
"Size: 44W\",\n"
"Size: 46,\n"
"Size: 4-6-8-10-12-14-16-18-20,\n"
"Size: 4-6-8-10-12-14-16-18-20-22,\n"
"Size: 4-6-8-10-12-14-16-18-20-22-24,\n"
"Size: 46W,\n"
"Size: 46W\",\n"
"Size: 48,\n"
"Size: 48\",\n"
"Size: 48-50,\n"
"Size: 48W,\n"
"Size: 48W\",\n"
"Size: 4T,\n"
"Size: 4T\",\n"
"Size: 4X,\n"
"Size: 4X\",\n"
"Size: 5 - 30/32,\n"
"Size: 5/6T,\n"
"Size: 50,\n"
"Size: 50W,\n"
"Size: 50W\",\n"
"Size: 52,\n"
"Size: 52-54,\n"
"Size: 52-56-54,\n"
"Size: 52-56-54-58-60,\n"
"Size: 52W,\n"
"Size: 54,\n"
"Size: 54\",\n"
"Size: 54W,\n"
"Size: 54W\",\n"
"Size: 56,\n"
"Size: 56\",\n"
"Size: 56-58,\n"
"Size: 56-58-60-62,\n"
"Size: 56-58-60-62-64,\n"
"Size: 56-58-60-62-64-66,\n"
"Size: 56W\",\n"
"Size: 58,\n"
"Size: 58\",\n"
"Size: 58-60-62-64,\n"
"Size: 5T,\n"
"Size: 5T\",\n"
"Size: 6,\n"
"Size: 60,\n"
"Size: 6-10,\n"
"Size: 62,\n"
"Size: 64,\n"
"Size: 64\",\n"
"Size: 66,\n"
"Size: 6-8-10-12-14-16-18-20-22-24,\n"
"Size: 6-8-10-12-14-16-18-20-24-22,\n"
"Size: 6M,\n"
"Size: 6M-12M-18M,\n"
"Size: 6M-12M-18M-24M,\n"
"Size: 6T,\n"
"Size: 7,\n"
"Size: 8,\n"
"Size: 8\",\n"
"Size: 8-10-12,\n"
"Size: 8-10-12-14\",\n"
"Size: Age_Youth,\n"
"Size: Age_Youth-S/M-L/XL,\n"
"Size: d?c-18,\n"
"Size: d?c-18-18/24,\n"
"Size: dc-18-18/24,\n"
"Size: L,\n"
"Size: L/XL,\n"
"Size: M,\n"
"Size: NB,\n"
"Size: NB-6M-12M-18M,\n"
"Size: NB-6M-12M-18M-24M,\n"
"Size: NB-6M-12M-18M-24M\",\n"
"Size: NB-6M-18M-24M,\n"
"Size: One Size,\n"
"Size: One Size\",\n"
"Size: OS 5Pack,\n"
"Size: OS 6Pack,\n"
"Size: S,\n"
"Size: S - 5XL,\n"
"Size: S/M,\n"
"Size: S/M-L/XL,\n"
"Size: S/M-L/XL-2X/,\n"
"Size: S/M-L/XL-2XL/,\n"
"Size: S/M-L/XL-2XL/3XL,\n"
"Size: S/M-L/XL-2XL/-3XL/,\n"
"Size: S/M-L/XL-2XL/3XL-4XL/5XL,\n"
"Size: S/M-L/XL-2XL/4XL,\n"
"Size: S/M-L/XL-XL/2XL,\n"
"Size: S-L/XL,\n"
"Size: S-M-4X,\n"
"Size: S-M-L\",\n"
"Size: S-M-L/XL,\n"
"Size: S-M-L-XL-2X,\n"
"Size: S-M-L-XL-2X-3X,\n"
"Size: S-M-L-XL-2XL-3XL-4X-5XL-6XL,\n"
"Size: S-M-L-XL-3X,\n"
"Size: S-M-L-XL-XXL,\n"
"Size: S-M-L-XL-XXL-3X,\n"
"Size: S-M-L-XL-XXL-3X-4X,\n"
"Size: ST,\n"
"Size: XL,\n"
"Size: XL\",\n"
"Size: XS,\n"
"Size: XS/S,\n"
"Size: XS/S-M/L,\n"
"Size: XS/S-M/XL,\n"
"Size: XS/S-S/M-M/L-L/XL-XL/2XL,\n"
"Size: XS-S/M-L/XL,\n"
"Size: XS-S-M-L\",\n"
"Size: XS-S-M-L-XL\",\n"
"Size: XS-S-M-L-XL-2X,\n"
"Size: XS-S-M-L-XL-2X-3X,\n"
"Size: XS-S-M-L-XL-2XL\",\n"
"Size: XS-S-M-L-XL-2XL-3XL-4X,\n"
"Size: XXL,\n"
"Size: XXS,\n"
"Size: XXS-3XL,\n"
"Size: XXS-S/M-L/XL-2XL/,\n"
"Size: XXS-S-L-XL,\n"
"Size: XXS-S-M-L,\n"
"Size: XXS-S-M-XL,\n"
"Size: XXS-XL-2XL-3XL,\n"
"Size: XXS-XS-M-L-XL,\n"
"Size: XXS-XS-S,\n"
"Size: XXS-XS-S-3XL,\n"
"Size: XXS-XS-S-L-XL,\n"
"Size: XXS-XS-S-M-L,\n"
"Size: XXS-XS-S-M-L-XL,\n"
"Size: XXS-XS-S-M-L-XL-2XL,\n"
"Size: XXS-XS-S-M-L-XL-2XL-3XL,\n"
"Size: XXS-XS-S-XL,")
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