条件正则表达式 - 注意错误

Ton*_*nis 2 python regex

我有一个包含任意数量的对的字符串:

A = B,C = D,E = F.

这是一个选项字符串,所以我知道"A","C"和"E".如果我愿意,我可以查询它们.

我想在字符串中找到格式错误的对:

A=B, C, E=F  # C has no equals or value
A=, C=D, E=F # A has no value
A=B, C=D, E=F X # what is X doing there!
Run Code Online (Sandbox Code Playgroud)

当然,A,C和E都是可选的,可以按任何顺序出现.

抓住所有对的优雅方法是什么,同时注意到错误情况?我现在能够使用re.findall(...),但我在上面的第三种情况下失败了.

这就是我所拥有的.在我的确切情况下,必须引用该对的右侧,但这对于这个问题并不重要.

re.findall('\s*(\w+)\s*=\s*(?P<Q>[\'\"])(\w*)(P=Q)\s*,{0,1}', a_string)
Run Code Online (Sandbox Code Playgroud)

如果我知道这a_string完全被消耗了,我会成为一个快乐的人.

Avi*_*Raj 5

拆分并打印不在图案中的字符串 A=B.

>>> def malformed(s):
    return [i for i in s.split(', ') if not re.search(r'^[A-Z]+=[A-Z]+$', i)]

>>> print(malformed('A=, C=D, E=F'))
['A=']
>>> print(malformed('A=B, C=D, E=F X'))
['E=F X']
>>> print(malformed('A=B, C, E=F'))
['C']
Run Code Online (Sandbox Code Playgroud)