Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/296.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
python正则表达式提取字符之间的字符串_Python_Regex - Fatal编程技术网

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

python正则表达式提取字符之间的字符串,python,regex,Python,Regex,我有一个字符串: x = "abc/xyz/foo/bar/foobar.mp3" 如何从中提取foobar 我是这样做的: import re re.search(r'\/[a-z]+.mp3', x) 尽管如此,我不知道如何提取不带“.”和不带“.mp3”的匹配字符串 我不想做Python拆分、rplist、分区等,因为它添加了额外的函数。我希望它尽可能简单和简短 编辑: 是的,这是一条路 我不知道这条路有多长 如前所述,我不想使用拆分 匹配非斜杠,然后查找\.mp3$: re.sear

我有一个字符串:

x = "abc/xyz/foo/bar/foobar.mp3"
如何从中提取foobar

我是这样做的:

import re
re.search(r'\/[a-z]+.mp3', x)
尽管如此,我不知道如何提取不带“.”和不带“.mp3”的匹配字符串

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

编辑:

  • 是的,这是一条路
  • 我不知道这条路有多长
  • 如前所述,我不想使用拆分

  • 匹配非斜杠,然后查找
    \.mp3$

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

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

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

    re.search(r'[^/]+(?=\.mp3$)', x)
    
    确保用反斜杠转义
    ,否则它将匹配任何字符。

    您可以使用此选项

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

    您可以使用此

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

    print(os.path.splitext(os.path.basename(x)))
    ?(假设它是一个文件路径,这是一个副本。给定
    .mp3
    我会认为它是)x.split(“/”[-1”)。split(.”[0]
    print(os.path.splitext(os.path.basename(x))
    (假设它是一个文件路径,这是一个副本。给定
    .mp3
    我会认为它是)x.split(“)[-1]。拆分(“.”[0]