如何使用正则表达式从字符串中提取文件名[重复]
Posted
技术标签:
【中文标题】如何使用正则表达式从字符串中提取文件名[重复]【英文标题】:How to extract the filename from a string using regular expression [duplicate] 【发布时间】:2020-01-30 13:33:46 【问题描述】:我是正则表达式的新手,并试图从基本上是文件路径的字符串中提取文件名。
string = "input_new/survey/argentina-attributes.csv"
string_required = argentina-attributes
我知道我可以通过下面的代码做到这一点。
string.split('/')[2].split('.')[0]
但我希望通过使用正则表达式来做到这一点,所以如果将来路径的格式发生变化(input_new/survey/path/path/argentina-attributes.csv)不应该影响输出。
我知道之前有人问过类似的问题,但我正在寻找一种适用于我的用例的模式。
【问题讨论】:
看看here,r'^.*[\\/](.+?)\.[^.]+$'
看起来就是你想要的。
我建议您使用pathlib 库(在std 库中),它用于操作路径并且(在我看来)非常方便。一个简单的Path(string).name
就可以了
`>>> re.search(r"^.*[\\/](.+?)\.[^.]+$", "input_new/survey/argentina-attributes. csv").group(0) 'input_new/survey/argentina-attributes.csv' 不工作
【参考方案1】:
试试这个,
>>> import re
>>> string = "input_new/survey/argentina-attributes.csv"
输出:
>>> re.findall(r'[^\/]+(?=\.)',string) # or re.findall(r'([^\/]+)\.',string)
['argentina-attributes']
转自here
【讨论】:
谢谢它的工作。【参考方案2】:试试这个:
string = "input_new/survey/argentina-attributes.csv"
new_string = string.split('/')[-1].split('.')[0]
print(new_string)
【讨论】:
谢谢,这会起作用,但是如何使用正则表达式来做到这一点。以上是关于如何使用正则表达式从字符串中提取文件名[重复]的主要内容,如果未能解决你的问题,请参考以下文章
正则表达式使用 Python 从 HTML 中的 href 属性中提取 URL [重复]
正则表达式:使用 SED 从 XML 中提取 IP 和 IPv6 [重复]