【问题标题】:python regex extract string between characters [duplicate]python regex提取字符之间的字符串[重复]
【发布时间】: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、分区等,因为它增加了额外的功能。我希望它尽可能简单和简短。

编辑:

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

【问题讨论】:

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

标签: python regex


【解决方案1】:

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

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

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

【讨论】:

    【解决方案2】:

    你可以用这个

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

    Demo

    【讨论】:

      猜你喜欢
      • 2020-11-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-24
      • 2016-12-09
      • 1970-01-01
      • 1970-01-01
      • 2019-03-14
      相关资源
      最近更新 更多