# coding=utf8
# the above tag defines encoding for this document and is for Python 2.x compatibility
import re
regex = r"(?<=[\.,;\s\t\n])[a-z0-9\-]{2,}(?=[\.,;\s\t\n])"
test_str = (" -a- -a-ll- [Enter KING HENRY, LORD JOHN OF , -,the;, LANCASTER , , the EARL\n"
"!and =all =12 ,123-,;, -qw !all a-a -doof I -i ,9ab+\n"
"xxx xx x !all ?nicht !and -doof -12 -aa\n"
" of WESTMORELAND, SIR WALTER BLUNT, and others]\n"
"12 d12a ; a1 d1a, ! ,aaaaa aaa ,aa1 .1a , ; !.a12\n"
"KING HENRY IV So !shaken as we, the are, so wan with care,\n"
" Find we a time; for frighted peace to pant,\n"
" And breathe short-winded accents of new broils\n"
" To be commenced in strands afar remote.\n"
" No more the thirsty entrance of this soil\n"
" Shall 12 daub her 1l1ips with her own children's blood;\n"
" Nor more shall trenching war channel her fields,\n"
" Nor bruise her flowerets with the armed hoofs\n"
" Of hostile paces: those opposed eyes,\n"
" Which, like the meteors of a troubled heaven,\n"
" All of one nature, of one substance bred,\n"
" Did lately meet in the intestine shock\n"
" And furious close of civil butchery\n"
" Shall now, in mutual well-beseeming ranks,\n"
" March all one way and be no more opposed\n"
" Against acquaintance, kindred and allies:\n"
" The edge of war, like an ill-sheathed knife,\n"
" No more shall cut his master. Therefore, friends,\n"
" As far as to the sepulchre of Christ,\n"
" Whose soldier now, under whose blessed cross\n"
" We are impressed and engaged to fight,\n"
" Forthwith a power of English shall we levy;\n"
" Whose arms were moulded in their mothers' womb\n"
" To chase these pagans in those holy fields\n"
" Over whose acres walk'd those blessed feet\n"
" Which fourteen hundred years ago were nail'd\n"
" For our advantage on the bitter cross.\n"
" But this our purpose now is twelve month old,\n"
" And bootless 'tis to tell you we will go:\n"
" Therefore we meet not now. Then let me hear\n"
" of you, my gentle cousin Westmoreland,\n"
" What yesternight our council did decree\n"
" In forwarding this dear expedience.\n\n"
"WESTMORELAND my liege, this haste was hot in question,\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