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

时间:2016-06-03 09:24:53

标签: regex

我想扩展我的正则表达式以匹配文件路径,即使我看到问题,我也不知道该怎么做。

输入示例

" C://species/dinosaurs/trex.json"

输出示例

[" C://物种/恐龙" " TREX" " JSON"]

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

我的正则表达

我试过

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

输出

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

差不多但我在头部的末尾有

我试过了

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

我输出

[" C://物种/恐龙/" " C://物种/恐龙" " TREX" " JSON"]

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

我看到了这个问题,因为身体中存在几个/可能会更难。 是否可以说第一个匹配组的结尾可以是全部而不是/.

我试过

^(.*(?!\/))[\\\/]?(.*)\.(.*)$

不起作用。我刚发现负面断言,但输出是

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

有任何线索吗?

2 个答案:

答案 0 :(得分:0)

这个应该符合您的需求:

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

Regular expression visualization

Debuggex

的可视化

答案 1 :(得分:0)

一个稍长的正则表达式,它将匹配dos& Linux风格的路径。

           'float' object has no attribute 'arctan'
           'float' object has no attribute 'sqrt'

这将返回3个捕获组: “C://物种/恐龙” “TREX” “JSON”

我在www.regexr.com上测试了它 所以它至少适用于javascript。