首页 > 解决方案 > 具有正前瞻的 Python 正则表达式可选捕获组

问题描述

试图找到某些文件夹模式。我可以有一个简单的 if 语句,但现在我想知道,这可以用一个正则表达式模式完成吗?

文件夹:

name
name_a01
name_a02
..
name_a20

name_dontuse_a10 <不想要这种模式

pattern = re.match(".*name(_a[0-9])?", dir)

以上匹配正确,但它同时匹配namename_dontuse_a10

pattern.group(1)

返回None这两个文件夹,所以这对我没有多大帮助。

我无法预测不需要的文件夹将被命名,但我想要基本名称文件夹和任何name_a## folder. 我想我需要一个 postie 前瞻,但不确定如何将它与可选的捕获组一起使用。

标签: pythonregexpython-2.7regex-lookarounds

解决方案


尝试使用这个:

pattern = re.match(".*name(_a[0-9]*)?$", dir)

我只是$在第一个下划线之后添加以匹配字符串的结尾。我还添加[0-9]*了匹配零个或多个数字。

现场示例:

https://regex101.com/r/MSldc6/2/


推荐阅读