开发者

Regex for everything before last forward or backward slash

开发者_StackOverflow中文版

I need a regex that will find everything in a string up to and including the last \ or /.

For example, c:\directory\file.txt should result in c:\directory\


Try this: (Rubular)

/^(.*[\\\/])/

Explanation:

^      Start of line/string
(      Start capturing group
.*     Match any character greedily
[\\\/] Match a backslash or a forward slash
)      End the capturing group  

The matched slash will be the last one because of the greediness of the .*.

If your language supports (or requires) it, you may wish to use a different delimiter than / for the regular expression so that you don't have to escape the forward-slash.

Also, if you are parsing file paths you will probably find that your language already has a library that does this. This would be better than using a regular expression.


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


If you're using sed for example, you could do this to output everything before the last slash:

echo "/home/me/documents/morestuff/before_last/last" | sed s:/[^/]*$::

It will output:

/home/me/documents/morestuff/before_last
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜