python - 如何将 sub() 方法与具有可选组的正则表达式一起使用?
问题描述
我已经在这个文件重命名程序上工作了几天了。多亏了我之前在这个网站上提出的所有“愚蠢”问题以及他们收到的高质量答案,我学到了很多东西。好吧,关于我的问题。
我的文件名格式如下:ACP001.jpg, ACP002.jpg,... ACP010.jpg, ACP011.jpg, ACP012_x.jpg, ACP013.jpg, ACP014_x.jpg
pattern = r'(ACP0)(0*)(\d+)(\.jpg)'
replace = r'\3\4'
所以这对他们中的大多数人来说都很好......但是还有一些在文件扩展名之前有“_x”。我修改了模式和替换模式如下
pattern = r'(ACP0)(0*)(\d+)(_w)*(\.jpg)'
replace = r'\3.jpg'
我想我通过硬编码替换字符串中的“.jpg”来作弊。我将如何处理匹配对象组可能具有不同大小的这些情况?在这个例子中,我基本上想要最后一组和第三组。
解决方案
使_x
术语可选:
pattern = r'(ACP0)(0*)(\d+)(_x)?(\.jpg)'
我实际上不知道为什么您的模式中有这么多捕获组。我会这样写:
pattern = r'ACP(\d{3})(_x)?\.jpg'
推荐阅读
- macos - 如何使用 Apple 脚本选择特定的应用程序窗口?
- reactjs - axios如何从圆括号内获取数据
- regex - bash 在下载页面上下载第一个匹配的正则表达式
- javascript - 串联继承具有相同签名的两个方法
- android - Android 将应用程序作为提要选项提供
- python - 如果大小取决于框架对象,如何获取应用程序尺寸?
- c# - 我可以在 .a 库中调试代码吗?
- html - Django/HTML - HTML 没有从上下文中显示完整的字符串,而只是其中的一部分
- kubernetes - Kubernetes(Azure VM)更改节点 ip
- flask - werkzeug.routing.BuildError:无法为端点“post”构建 url。您是否忘记指定值 ['post_id']?