import re
regex = re.compile(r"(aS)\s+((\`)?\w+(\`)?)(\s+|\,|(FRom\s+))", flags=re.MULTILINE | re.IGNORECASE)
test_str = (" SELECT \n"
" a.WORKORDER_NO AS workOrderNo, \n"
" a.ORD_TYPE AS ordType, \n"
" a.ORD_NO AS ordNo, \n"
" a.RETURN_FLAG AS returnFlag, \n"
" a.AREA_ID AS areaId, \n"
" a.USER_NAME AS userName, \n"
" a.ADDR_DETAIL AS addrDetail, \n"
" a.HANDLE_STAFF_ID AS handleStaffId, \n"
" a.TAKE_STAFF_ID AS takeStaffId, \n"
" a.TAKE_TS AS takeTs, \n"
" a.RETURN_STAFF_ID AS returnStaffId, \n"
" a.RETURN_TS AS returnTs, \n"
" a.SUMMARY AS summary, \n"
" a.WO_TITLE AS woTitle, \n"
" a.INSTALL_FLAG AS installFlag, \n"
" a.START_TS AS startTs, \n"
" a.END_TS AS endTs, \n"
" a.GRID_ID AS gridId, \n"
" a.SCHEMA_ID AS schemaId, \n"
" a.PROJECT_ID AS projectId, \n"
" a.COMMENTS AS comments, \n"
" a.STATE AS `state`, \n"
" a.CREATE_USER AS createUser, \n"
" a.CREATE_DATE AS createDate, \n"
" a.MODIFY_USER AS modifyUser, \n"
" a.MODIFY_DATE AS modifyDate, \n"
" a.HANDLE_TEAM_ID AS handleTeamId, \n"
" a.PACKAGE_ID AS packageId, \n"
" a.PACKAGE_NAME AS packageName, \n"
" a.SUB_TYPE AS subType, \n"
" a.pre_work_order_no AS preWorkOrderNo, \n"
" a.IS_SYNC AS isSync, \n"
" a.IS_VIRTUAL AS isVirtual, \n"
" a.VIRTUAL_WORKORDER_NO AS virtualWorkOrderNo, \n"
" a.VIRTUAL_WORKORDER_RES_ID AS virtualWorkOrderResId, \n"
" a.IS_POLE AS isPole, \n"
" a.VER_NO AS verNo, \n"
" a.TASK_ID AS taskId, \n"
" \n"
" b.USER_NAME AS userName \n"
" \n"
" FROM oss_edn.edn_work_order a \n"
" LEFT JOIN oss_wfm.wfs_user_infor b ON a.HANDLE_STAFF_ID = b.USER_ID \n"
" WHERE a.WORKORDER_NO = :workOrderNo")
matches = regex.finditer(test_str)
for match_num, match in enumerate(matches, start=1):
print(f"Match {match_num} was found at {match.start()}-{match.end()}: {match.group()}")
for group_num, group in enumerate(match.groups(), start=1):
print(f"Group {group_num} found at {match.start(group_num)}-{match.end(group_num)}: {group}")
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