# coding=utf8
# the above tag defines encoding for this document and is for Python 2.x compatibility
import re
regex = r"^(?:(?!^\s|[ \-']{2}|[\d\r\n\t\f\v!\"#$%&()*+,\.\/:;<=>?@[\\\]^_`{|}~€‚ƒ„…†‡ˆ‰‹‘’“”•–—˜™›¡¢£¤¥¦§¨©ª«¬®¯°±²³´¶·¸¹º»¼½¾¿×÷№′″ⁿ⁺⁰‱₁₂₃₄]|\s$).){1,50}$"
test_str = ("Regex matches: from 1 to 50 international letters separated by single delimiter ( -')\n"
"Regex rejects: empty prefix/suffix, consecutive delimiters ( -'), digits, new line, tab, limited list of extended ASCII characters\n\n"
"Jo Nesbø\n"
"Pedro Almodóvar\n"
"بيدرو ألمودوبار\n"
"Sofija Jogailaitė\n"
"Akira Kurosawa\n"
"Куросава Акіра\n"
"Куросава Акира\n"
"黒澤明\n"
"黑澤明\n"
"আকিৰা কুৰোছাৱা\n"
"Tyue' Tgshh\n"
"CxCx5C5C\n"
"AKIRA KUROSAWA\n"
"Akir@ Kursawa\n"
"Stev3 Smith\n"
"STeve Smith\n"
"Steve SMith\n"
"Steve Sm1th\n"
"Steve G. Smith\n"
"d'Are to Beaware\n"
"Hyoung Kyoung Wu\n"
"Mike O'Neal\n"
"Steve Johnson-Smith\n"
"Jozef-Schmozev Hiemdel\n"
"O Henry Smith\n"
"Mathais d'Arras\n"
"Martin Luther King Jr\n"
"Downtown-James Brown\n"
"Darren McCarty\n"
"An Ni\n"
"O. Henry McCarty\n"
"George De FunkMaster\n"
"Kurtis B-Ball\n"
"Ahmad el Jeffe\n"
"John Smith\n"
"'John Smith")
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