如何使用正则表达式从字符串中提取文件名[重复]

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 [重复]

如何使用正则表达式从 C++ 字符串中提取字符串

如何使用正则表达式或任何其他方法在 PL/SQL 中提取单引号内的字符串 [重复]

如何使用 JavaScript 正则表达式提取字符串?