python regex提取字符之间的字符串[重复]

Posted

技术标签:

【中文标题】python regex提取字符之间的字符串[重复]【英文标题】:python regex extract string between characters [duplicate] 【发布时间】:2019-10-13 17:06:22 【问题描述】:

我有一个字符串:

x = "abc/xyz/foo/bar/foobar.mp3"

如何从中提取foobar?

我是这样做的:

import re
re.search(r'\/[a-z]+.mp3', x)

虽然,我不知道如何提取没有'。'的匹配字符串并且没有'.mp3'。

我不想做 Python 拆分、rplist、分区等,因为它增加了额外的功能。我希望它尽可能简单和简短。

编辑:

    是的,它是一条路径。 我不知道路径的长度。 如前所述,我不想使用拆分。

【问题讨论】:

print(os.path.splitext(os.path.basename(x)))? (假设它是一个文件路径是重复的。鉴于.mp3我认为它是) x.split("/")[-1].split(".")[0] 【参考方案1】:

匹配非斜线,然后向前查找\.mp3$

re.search(r'[^/]+(?=\.mp3$)', x)

确保使用反斜杠转义.,否则它将匹配任何字符。

【讨论】:

【参考方案2】:

你可以用这个

[a-z]+(?=\.mp3$)
[a-z]+ - 匹配字母一次或多次 (?=\.mp3$) - 正向前瞻检查匹配必须跟在 .mp3 和行尾

Demo

【讨论】:

以上是关于python regex提取字符之间的字符串[重复]的主要内容,如果未能解决你的问题,请参考以下文章

在两组下划线之间提取字符串的Regex [重复] 。

使用 RegEx 搜索术语并提取其前后的字符 [重复]

Regex 提取字符串中重复数据且格式化显示

查找字符串,提取值[重复]

如何使用 .NET C# regex 或其他任何方法提取 *>...* 之间的文本字符串?

从 URL 中提取部分字符串 - Java Regex