我在RegexBuddy里测试了这个regex
,[A-Z\s]+?,(LA|RO|MU|FE|AV|CA),(ML|FE|MN|FS|UN)?,(\d+/\d+/\d{4})?
它似乎能够做我需要它做的事情-捕获一段数据,它看起来像以下之一:
,粉末,RO,ML,8/19/2002
,粉末,RO,,,,
,粉末,RO,,2002年8月19日
,粉末,RO,ML,,
当我在python字符串中使用它时:
r",[A-Z\s]+?,(LA|RO|MU|FE|AV|CA),(ML|FE|MN|FS|UN)?,(\d+/\d+/\d{4})?"
它错过了匹配的第一部分,我得到的匹配结果如下:RO,ML,8/19/2002,或RO,ML,或jusr RO
第一个标记是存储为all caps的单词,其中可能有空格(和/或我需要很快说明的标点符号)。如果我删除空格,它仍然不能捕获它应该捕获的一个单词的名称。我错过什么明显的东西了吗?你知道吗
是的。你没有捕获第一组。你知道吗
顺便说一句,您似乎正在用regex解析CSV文件。在Python中,已经有了^{} module 。你知道吗
正则表达式的第一部分没有捕获括号。尝试正则表达式:
在python中是这样的:
口译员举例:
我不喜欢python,但是您忘记了使用括号来表示您想要捕获该部分:
,([A-Z\s]+)?,(LA|RO|MU|FE|AV|CA),(ML|FE|MN|FS|UN)?,(\d+/\d+/\d{4})?
应该做你想做的事相关问题 更多 >
编程相关推荐