gpt4 book ai didi

java - 如何从字符串中提取 Unix 风格的本地文件路径?

转载 作者:行者123 更新时间:2023-11-29 06:15:49 25 4
gpt4 key购买 nike

假设我有一个字符串,其中包含文件的 Unix 风格本地路径,如下例所示:

 String s1 = "something something ./files/icon.gif";
String s2 = "The files are texts/text1.txt and texts/text2.txt";
String s3 = "<img src="images/img/run.png" alt="" />"

所以,我只需要提取文件路径:

 "./files/icon.gif"
"texts/text1.txt", "texts/text2.txt"
"images/img/run.png"

我提出了以下正则表达式:

\.?[[a-zA-Z0-9]*/]+\.[a-zA-Z0-9]+

它完成了这些测试用例的工作。

现在,我担心的是这可能拉出不是文件路径的其他文本,并且看起来只是一个,因为它在正确的位置有斜杠和点。

有没有更好的方法来处理这个问题(甚至可能不使用正则表达式)?

最佳答案

你做不到。 Unix 文件名实际上可以包含除 NUL 和 / 之外的任何内容,因此任何没有嵌入 NUL 的字符串都是有效路径。见:

[alqualos@brededor tmp]$ mkdir -p 'String s1 = "something something ./files/icon.gif";'
[alqualos@brededor tmp]$ ll -d String*
drwxr-xr-x 3 alqualos alqualos 4096 2011-02-26 16:31 String s1 = "something something .
[alqualos@brededor tmp]$ ll String\ s1\ \=\ \"something\ something\ ./
total 4K
drwxr-xr-x 3 alqualos alqualos 4096 2011-02-26 16:31 files
[alqualos@brededor tmp]$ ll String\ s1\ \=\ \"something\ something\ ./files/
total 4K
drwxr-xr-x 2 alqualos alqualos 4096 2011-02-26 16:31 icon.gif";

所以你所有的字符串都是有效的文件路径。如果你想提取所有看起来像“合理”路径的东西,那么你必须首先定义“合理”,即使这样你也可能会因为源文本中的“TCP/IP”之类的东西而失败。

关于java - 如何从字符串中提取 Unix 风格的本地文件路径?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5127119/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com