引:有时候我们会碰到这这样的需求,需要从文件名xxx.yyy中切分出名称xxx和扩展名yyy。这些可以利用“%” “%%” “#” “##”操作符来完成。
一. “%” 操作符:
1. 例子:
例1
例2
2.解释:
例1:file变量的值为“sample.jpg”。 file%.* 意思是从file变量(例子中是sample.jpg)的右边开始匹配,直到遇到第一个匹配 .* 的字符串(例子中是.jpg),然后将其删掉 。所以变量name的值就是sample了。
例2:如果file变量的值为"sample.jpg.txt",那么file%.* 只会删除 .txt ,name会是sample.jpg。也即%操作符是非贪婪的。遇到第一个匹配后就会停止。
3. 注意:
二. "%%" 操作符:
1. 例子:
2. 解释:
“%%” 与 “%” 的区别就是‘%%‘是贪婪的,意味着它会匹配符合条件的最长字符串。所以在例子中,file%%.* 会从右边开始匹配,最长的匹配是.jpg.txt,然后将其删除。所以变量name的值为sample。
三. "#"操作符
1. 例子:
例1
例2
2. 解释:
例1:file#*. 是从右向左执行非贪婪匹配。找到第一个匹配 *. 的字符串(例子中是"sample."),然后将其删除。于是变量ext就是 “jpg” 了。
例2:说明了#的匹配是非贪婪的,找到第一个匹配了就会停止。
四. "##"操作符
1. 例子:
2. 解释:
与"%%" 类似,“##” 是 “#” 的贪婪模式,也即会从右向左匹配符合条件的最长字符串。所以例子中将会删除“sample.jpg.txt"中的”sample.jgp.“。
原文:http://www.cnblogs.com/blues-harp/p/4049236.html