# coding=utf8
# the above tag defines encoding for this document and is for Python 2.x compatibility
import re
regex = r"((?'field'[a-z_]+)\s+(?'operator'eq|ne|gt|lt|ge|le)\s+(?'value'(?>'[\w\-:\s]+')|(?>[\w]+))(\s+(?'join'and|or))?)+"
test_str = ("activity_id eq 9 and \n"
" status eq 'active asdf activity_id eq 9 and var gt 3' \n"
"status eq 'active' and activity_id eq 9 \n"
"activity_id eq 9 \n"
"status eq 'active' \n"
"status eq 'active asdf activity_id eq 9 and var gt 3' and activity_id eq 9\n"
"activity_id eq 9\n"
"status eq 'active' \n"
"status eq 'active\n"
" and done' \n"
"activity_id eq 9 and status eq 'active'\n"
"activity_id eq 9 or status eq 'active'\n"
"status eq 'active' \n"
"and activity_id eq 9\n"
"status eq 'active' or activity_id eq 9\n"
"status eq 'active and done' and activity_id eq 9\n"
"status eq 'active and done' or activity_id eq 9\n"
"activity_id eq 9 and start_date le '2021-03-20T00:00:00-00:00'\n"
"start_date le '2021-03-20T00:00:00-00:00'")
subst = ""
# You can manually specify the number of replacements by changing the 4th argument
result = re.sub(regex, subst, test_str, 0)
if result:
print (result)
# 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