python 最贪婪地从末尾剥离字符串

标签 python regex

这里是:

str_ = 'file_.csv_.csv.bz2'
re.sub(regex, '', str_)

我希望“regex”值获取'file_.csv_',即没有实际扩展名的文件名,此处为'.csv.bz2'并且可以是'.csv.*' while .* = ''|bz2|gz|7z|... 任何压缩格式。

更准确地说,我希望 re.substr_ 的末尾最贪婪地匹配。 使用 regex = '\.csv.*$' 我只会得到 'file_'

我当然可以做 os.path.splitext() - 检查 str_ 是否以 '.csv' 结尾 - os.path.splitext() 如果是,但是有更短的方法吗?

最佳答案

您可以使用re.split()分割后缀:

result = re.split(r'\.csv(?:\.\w+)?$', filename)[0]

演示:

>>> import re
>>> filename = 'file_.csv_.csv.bz2'
>>> re.split(r'\.csv(?:\.\w+)?$', filename)[0]
'file_.csv_'
>>> re.split(r'\.csv(?:\.\w+)?$', 'foobar_.csv_.csv')[0]
'foobar_.csv_'
>>> re.split(r'\.csv(?:\.\w+)?$', 'foobar_.csv_.csv.gz')[0]
'foobar_.csv_'

关于python 最贪婪地从末尾剥离字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24808900/

相关文章:

regex - awk 中多字符定界符的非贪婪正则表达式匹配

python - 整个 Django 项目中的空白 label_suffix

javascript - 'simple' 正则表达式的负后视工作

Python 范围界定问题举例

python - Pyqt5 qthread + 信号不工作 + gui 卡住

javascript - 正则表达式没有正确切割 url

javascript - 具有范围数值的输入框的 KeyUp 事件的 Jquery Regex

用于英国邮政区域的 MySQL 正则表达式

python - 内部 Keras 模型中的多个嵌入层问题

python - 在 PySolr 中验证连接