在python中处理无与伦比的正则表达式搜索的最佳方法?

时间:2018-01-15 21:35:29

标签: python regex

目前,我有一些代码使用try / except跳过在与某些正则表达式不匹配的文件路径上运行代码。使用“组”功能提取的子字符串也将在稍后的代码中使用。

for path in pathsList:
    try: 
        subfolder = re.search("\.(\w+)\.\d+\.\w+$", path).group(1)
    except AttributeError: 
        subfolder = None

    if subfolder:
        #do stuff with the extracted 'subfolder' substring

但我觉得有可能采用更清洁的方式来做到这一点。假设我必须坚持使用正则表达式(我的实际用例有点复杂,所以我不能使用更简单的字符串/文件/路径解析库),这是最好的方法吗?

1 个答案:

答案 0 :(得分:2)

返回无匹配的正则表达式的计算结果为False,因此您只需执行以下操作:

search = re.search("\.(\w+)\.\d+\.\w+$", path)
if search:
     subfolder = search.group(1)

The documentation声明完全这个!

  

由于match()和search()在没有匹配时返回None,因此您可以测试是否与简单的if语句匹配:

match = re.search(pattern, string)
if match:
    process(match)