根据Python Regex中的条件分割字符列表

时间:2019-06-06 10:33:56

标签: python regex split

我有一个字符列表,格式为“ EXECUTE SYS-SM-THIS-1004”

根据条件分割此列表的有效方法是什么:

  1. 从列表中考虑执行后的字符,使用连字符(-)作为分隔符将它们分割
  2. 从结果列表中,第一个元素必须等于[SYS,CSC,ISC]中的任何一个
  3. 最后一个字母必须为4位数字
  4. 删除开头和结尾的连字符后,第一个和最后一个单词之间的内容将移到新列表中。最后用下划线代替连字符。

查找该行是否有工作的条件EXECUTE正在工作。如何检查其他条件?

if re.match('^\s*EXECUTE .*', line) or re.match('^\s*execute.*', line) :

输入:

a = ["EXECUTE SYS-SM-THIS-1004"]

预期输出:

X = SYS
Y = SM_THIS
Z = SYS-SM-THIS-1004

1 个答案:

答案 0 :(得分:2)

使用re.match

例如:

import re
s = "EXECUTE SYS-SM-THIS-1004"
m = re.match(r"EXECUTE (?P<Z>(?P<X>SYS|CSC|ISC)\-(?P<Y>\S+)\-\d{4})$", s.strip())
if m:
    X = m.group("X")
    Y = m.group("Y").replace("-", "_")
    Z = m.group("Z")
    print(X, Y, Z)

输出:

('SYS', 'SM_THIS', 'SYS-SM-THIS-1004')