我试图从文本中提取一些数据组,并验证输入文本是否正确。在简化形式中,我的输入文本如下所示:
Sample=A,B;C,D;E,F;G,H;I&other_text
我感兴趣的是把它们提取出来。你知道吗
在泛型形式中,示例如下所示:
val11,val12;val21,val22;...;valn1,valn2;final_val
任意数量的逗号分隔对,用分号分隔,最后只有一个值。 在最终值之前必须至少有两对。你知道吗
我想到的正则表达式是这样的:
r'Sample=(\w),(\w);(\w),(\w);((\w),(\w);)*(\w)'
假设我想要的组仅仅是单词(实际上它们更复杂,但这超出了问题的范围)。 它实际上捕获了整个文本,但无法正确地对值进行分组。你知道吗
您可以使用一个包含OR的regex来决定要解析哪种数据。我把正则表达式隔开,以便注释和清晰。你知道吗
这将导致:
您可以不使用regex,通过使用字符串。拆分. 你知道吗
举个例子:
这将产生以下列表:
我只是假设您的“值”是由除
,
和;
之外的任何字符组成的,即[^,;]+
。这显然需要在re.match
和re.finditer
调用中进行修改,以满足您的实际需求。你知道吗印刷品:
相关问题 更多 >
编程相关推荐