import re
regex = re.compile(r"(?:^(?:[(]?\b(?:_xTagsx_)\b(?:and|[ ,.&+/-])*)+[:. \)-]*|(?:[:. \(-]|in|with|using)*(?:\b(?:_xTagsx_)\b(?:and|[ ,&+/)-])*)+([?.! ]*)$)", flags=re.IGNORECASE | re.MULTILINE)
test_str = ("Note use of _xTagsx_ placeholder; this is replaced in code.\n"
"Be careful: any escaped characters will require double-escape in string to form regexp.\n"
"** Flags should be gi in production; 'm' for test here only.\n\n"
"Remove leading tags from:\n\n"
"_xTagsx_ & _xTagsx_: Rest of title\n\n"
"_xTagsx_ - _xTagsx_ - _xTagsx_ - Rest of title\n\n"
"_xTagsx_ Rest of title\n\n"
"_xTagsx_, _xTagsx_ & _xTagsx_ Rest of title\n\n"
"_xTagsx_. Checking if string contains text from an array of substrings.\n\n"
"_xTagsx_ and _xTagsx_:\n\n"
"_xTagsx_ - Rest of title\n\n"
"_xTagsx_/_xTagsx_ - Rest of title\n\n"
"(_xTagsx_) Rest of title\n\n\n"
"Remove Trailing tags (but leave final punctuation, if any) from:\n\n"
"How to use <= in _xTagsx_ _xTagsx_?\n\n"
"Rest of title (_xTagsx_)\n\n"
"Rest of title (_xTagsx_/_xTagsx_ - _xTagsx_)\n\n"
"Rest of title - in _xTagsx_.\n\n\n"
"Leave alone:\n\n"
"Use of _xTagsx_ in general.\n\n"
"_xTagsx_as part of a word_xTagsx_")
subst = "$1"
result = regex.sub(subst, test_str)
if result:
print(result)
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