一说起通配符,大家很快就会想起*和?号,有了通配符,使得表达能力大大增强,很多linux命令都支持这个东西,其实就是glob style pattern.
就连redis的keys命令都支持glob.
我要实现的glob,支持以下特性:
星号*匹配0个或多个任意字符
?匹配确切的一个任意字符
[characters]匹配任意一个方括号内的字符,比如[abc],要么匹配a,要么匹配b,要么匹配c.
[!character]排除方括号内的字符
[character-character],表示2个字符范围内的都可以匹配,如[a-z],[0-9]
实现这个东西其实挺简单的,从左往右扫描s串和p串,如果最后都走到了结尾,那么就是可......
阅读全文