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