У меня есть строка, которая включает в себя произвольное число пар:условные регулярные выражения - замечать ошибки
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!
Конечно, А, С и Е являются необязательными и могут появляться в любом порядке.
Каков элегантный способ захвата всех пар, заметив ошибку? Теперь я могу захватить пары, используя re.findall(...)
, но я не могу в третьем случае выше.
Вот что у меня есть. В моем конкретном случае правая часть пары должна быть указана, но это не важно для этого вопроса.
re.findall('\s*(\w+)\s*=\s*(?P<Q>[\'\"])(\w*)(P=Q)\s*,{0,1}', a_string)
Если бы я знал, что a_string
был полностью израсходован, я был бы счастливым парнем.
Интересно, ударив по нему с другой стороны. –
?? Извините, я не могу понять ваши слова. –
Если вы обнаруживаете неправильные выражения, вы позволяете прямому регулярному выражению находить действительные пары. Это хорошо. –