我在RegexBuddy中测试了这个正则表达式
,[A-Z\s]+?,(LA|RO|MU|FE|AV|CA),(ML|FE|MN|FS|UN)?,(\d+/\d+/\d{4})?
Run Code Online (Sandbox Code Playgroud)
它似乎能够做我需要它做的事情 - 捕获一段看起来像下列之一的数据:
,POWDER,RO,ML,8/19/2002
,POWDER,RO ,,,
POWDER,RO ,, 8/19/2002
,POWDER,RO,ML ,,
当我在python字符串中使用它时:
r",[A-Z\s]+?,(LA|RO|MU|FE|AV|CA),(ML|FE|MN|FS|UN)?,(\d+/\d+/\d{4})?"
Run Code Online (Sandbox Code Playgroud)
它错过了比赛的第一部分,我得到的比赛看起来像:RO,ML,8/19/2002,或RO,ML或jusr RO,
第一个标记是一个存储为全部大写字的单词,并且可能在其中包含空格(和/或可能需要解决的标点符号).如果我删除空格,它仍然不会捕获它应该的单词名称.我错过了一些明显的东西吗
是.你没有捕获第一组.
r",([A-Z\s]+),(LA|RO|MU|FE|AV|CA),(ML|FE|MN|FS|UN)?,(\d+/\d+/\d{4})?"
# ^ ^
Run Code Online (Sandbox Code Playgroud)
顺便说一句,您似乎正在使用正则表达式解析CSV文件.在Python中,已经有一个csv模块.