Regex 是否可以删除此匹配中的斜杠?

Regex 是否可以删除此匹配中的斜杠?,regex,Regex,我想扩展我的regexp以进行文件路径匹配,但即使我发现了问题,我也不知道怎么做 input示例 “C://species/dionols/trex.json” 输出示例 [“C://物种/恐龙”“trex”“json”] 这样我就有了文件夹路径、文件名和扩展名。 我还希望文件夹路径是可选的 我的regexp 我试过了 "^(.*[\\\/])?(.*)\.(.*)$" 它输出 ["C://species/dinosaurs/" "trex" "json"] 差不多了,但我的头很长 我试过了

我想扩展我的regexp以进行文件路径匹配,但即使我发现了问题,我也不知道怎么做

input示例

“C://species/dionols/trex.json”

输出示例

[“C://物种/恐龙”“trex”“json”]

这样我就有了文件夹路径、文件名和扩展名。 我还希望文件夹路径是可选的

我的regexp

我试过了

"^(.*[\\\/])?(.*)\.(.*)$"
它输出

["C://species/dinosaurs/" "trex" "json"]
差不多了,但我的头很长

我试过了

"^((.*)[\\\/])?(.*)\.(.*)$"
我输出

[“C://物种/恐龙/”“C://物种/恐龙”“trex”“json”]

也许更好,因为我只需要删除第一个匹配项,而在第一种情况下,我必须对字符串进行后期处理

我看到了这个问题,因为身体中可能存在一些病毒,所以更难。 是否可以说第一个匹配组的结尾可以是all,但不能是/

我试过了

^(.*(?!\/))[\\\/]?(.*)\.(.*)$
不起作用。我刚刚发现了否定断言,但输出是

["C://species/dinosaurs/trex" "json"]   

有什么线索吗?

这条应该适合你的需要:

^(?:(.*)/)?([^/]+)\.([^.]+)$


通过

实现可视化此功能应满足您的需要:

^(?:(.*)/)?([^/]+)\.([^.]+)$


通过

/[\/:a-z]+(?=\/)|[a-z]+//gi
检查可视化。假设最后总是有文件扩展名,您使用regex的原因是什么?任何像样的编程语言都应该能够将路径拆分为目录和文件名,然后将扩展名从文件名中拆分出来。rock321987解决了这个问题,谢谢。对其他人来说,数字也可能存在。我不知道它是否存在,可能是因为Clojure使用Java,但它不是一个巨大的函数
/[\/:a-z]+(?=\/)|[a-z]+/gi
检查..假设最后总是有文件扩展名,那么使用正则表达式有什么特别的原因吗?任何像样的编程语言都应该能够将路径拆分为目录和文件名,然后将扩展名从文件名中拆分出来。rock321987解决了这个问题,谢谢。对其他人来说,数字也可能存在。我不知道它是否存在,可能是因为Clojure使用Java,但它不是一个巨大的函数