Python 正则表达式可选捕获组,具有正向前瞻功能

标签 python regex python-2.7 regex-lookarounds

尝试查找某些文件夹模式。我可以有一个简单的 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## 文件夹。我想我需要一个 postie 前瞻,但不确定如何将其与可选的捕获组一起使用。

最佳答案

尝试使用这个:

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

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

实例:

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

关于Python 正则表达式可选捕获组,具有正向前瞻功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52955006/

相关文章:

python - SSH OverTheWire 脚本

python - 你能在 python 中轻松创建一个类似列表的对象,它使用类似描述符的东西来描述它的项目吗?

python - 仅使用一次 glob 搜索多个模式

ruby - 正则表达式从字符串中选择周围没有任何空格的所有逗号

regex - unix 查找字典序小于给定文件名的文件名

python - 使用 python 请求的多部分 POST

python - 条形图绘制总和,而不是列的平均值

Python 计数器,用于计算输出中列出的最常见字符串

Python 2.7 - 无效文字错误

python - 从 Python 更改 Windows 背景