Python正则表达式提取字符之间的字符串

时间:2019-05-28 08:04:46

标签: python regex

我有一个字符串:

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

如何从中提取foobar?

我是通过这种方式完成的:

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

尽管,我不知道如何在没有'。'的情况下提取匹配的字符串。并且没有“ .mp3”。

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

编辑:

  1. 是的,这是一条路径。
  2. 我不知道路径的长度。
  3. 如前所述,我不想使用拆分。

2 个答案:

答案 0 :(得分:1)

匹配非斜杠,然后向前搜索\.mp3$

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

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

答案 1 :(得分:1)

您可以使用此

[a-z]+(?=\.mp3$)
  • [a-z]+-一次或多次匹配字母
  • (?=\.mp3$)-检查匹配项的正向搜索必须紧跟.mp3和行尾

Demo