使用Python正则表达式组解析带有可选子字符串的字符串

时间:2019-05-09 10:24:49

标签: regex python-2.7 regex-group

我在制作与包含可能包含可选子字符串的文件名匹配的Python正则表达式时遇到了一些麻烦。我要匹配的不同类型文件名的代表性示例:

ABC.log
A1C_0001.log
A1C_DEF_0001.log
A1C_DEF_GHI_0001.log

我需要能够检索以下组的值(如果存在):

NUMBER:如果存在,则是\.log之前的四个数字

NAME:\.log_(?P<NUMBER>[0-9]{4})\.log之前的任何内容

因此,对于我之前的示例:

ABC.log               =>  NAME: ABC         ; GROUP: None
A1C_0001.log          =>  NAME: A1C         ; GROUP: 0001
A1C_DEF_0001.log      =>  NAME: A1C_DEF     ; GROUP: 0001
A1C_DEF_GHI_0001.log  =>  NAME: A1C_DEF_GHI ; GROUP: 0001

我认为^(?P<NAME>.*)(_(?P<NUMBER>[0-9]{4})|)\.log$可以解决问题,但是使用此正则表达式NUMBER可以包含在NAME中。由于NAME可以包含下划线和数字,所以我不知道该尝试什么,尽管我觉得这并不难。

我要避免的是必须使用类似^(?P<NAME1>.*)_(?P<NUMBER>[0-9]{4})|(?P<NAME2>.*)\.log$的东西。有什么想法吗?

0 个答案:

没有答案