# coding=utf8
# the above tag defines encoding for this document and is for Python 2.x compatibility
import re
regex = r"OTHER REFERENCE:\s\d{8}\D{4}\s(?!\b(SHOPIFY)\b)\w+"
test_str = ("OTHER REFERENCE: 20180201AIEJ SHOPIFY INTERNATIO SHOPIFY PMT AMT GBP 664367.38 | \n"
"OTHER REFERENCE: 20180201AJJS Shopify (Ireland) Limited SEPA Credit PMT AMT EUR 22718.08 | \n"
"OTHER REFERENCE: 20180301AIOV SHOPIFY INTERNATIO PMT AMT GBP 692673.45 | \n"
"OTHER REFERENCE: 20180302AKIH Shopify (Ireland) Limited SEPA Credit PMT AMT EUR 20147.37 | \n"
"OTHER REFERENCE: 20180226AJYS STRIPE DDA BACS PMT AMT GBP 122328.84 | \n"
"OTHER REFERENCE: 20180125AJDH STRIPE DDA BACS PMT AMT GBP 48392.41 | \n"
"OTHER REFERENCE: 20180103AGEJ STRIPE DDA BACS PMT AMT GBP 106257.89 | OTHER REFERENCE: 20180327AIQU STRIPE DDA BACS PMT AMT GBP 83725.34 | \n\n\n"
"(?m)^(?:(?!\\bSHOPIFY\\b).)+$")
matches = re.finditer(regex, test_str)
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