繁体   English   中英

正则表达式:在句号之后,最后一个斜杠之前查找所有内容

[英]Regex: Find everything after a period, before the last slash

我发现了一些类似的正则表达式问题,但我正在努力将这些答案转化为我想要做的事情。 我有一个这样的字符串:

Y:\Path\sub path\name_of_folder.microphones.flac24\trackname01.flac

我想返回“flac24”

name_of_folder 中的句点数会有所不同。 我已经想出了如何隔离最后两个斜杠之间的文本,但我现在似乎无法在最后一段之后得到部分:

(?<=\\)[^\\]*(?=\\[^\\]*$)

谢谢!

对于正则表达式,我会这样做:

\.([^.\\]+)\\[^\\]+$

演示

既然你标记了这个 Python,你也可以考虑只使用Pathlib

from pathlib import PureWindowsPath 

p=PureWindowsPath(r'Y:\Path\sub path\name_of_folder.microphones.flac24\trackname01.flac')

>>> p.parts[-2].split('.')[-1]
flac24

您可以使用

\\[^\\]*\.([^\\]*)\\[^\\]*$

请参阅正则表达式演示 详情

  • \\ - 一个\字符
  • [^\\]* - 尽可能多的除\之外的零个或多个字符
  • \. - 一个. 字符
  • ([^\\]*) - 第 1 组:除\ char 之外的零个或多个字符
  • \\ - 一个\字符
  • [^\\]* - 除\ char 之外的零个或多个字符
  • $ - 字符串结束。

请参阅Python 演示

import re
regex = r"\\[^\\]*\.([^\\]*)\\[^\\]*$"
x = "Y:\\Path\\sub path\\name_of_folder.microphones.flac24\\trackname01.flac"
match = re.search(regex, x)
if match:
    print(match.group(1))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM