简介这是字符串处理系列的第三篇文章。前两篇文章基本涵盖了字符串处理中的常见操作,没有对字符串匹配进行详细展开。通配符(glob)是shell中一个比较重要的概念,可以认为是正则表达式的简化版。通配符在字符串匹配和文件名搜索等方面很有用。本文只讲它在字符串匹配中的用法。通配符的基本用法在讲字符串匹配判断之前,出现了通配符,即*$str"*两边的星号。%str1=abcd%str2=bc#星号必须在引号外%[["$str1"==*"$str2"*]]&&echogoodgood星号是最常用的通配符,用来匹配任意数字(包括0)的任意字符。#问号用于匹配任何字符%[[abcd==ab??]]&&echogoodgood#括号用来匹配其中出现的单个字符%[[abcd==abc[bcd]]]&&echogoodgood#如果方括号中的第一个字符是^,它匹配除了一个方括号内的单个字符%[[abcd==abc[^de]]]&&echogood%[[abcd==abc[^ce]]]&&echogoodgood#括号内可以指定字符范围%[[a4==[a-b][2-5]]]&&echogoodgood#可以指定多个字符范围,其他字符可以混合%[[B4==[a-cdddA-B][2-5]]]&&echogoodgood#尖括号用于匹配范围内的单个整数%[[123==12<3-4>]]&&echogoodgood#可以匹配整个整数%[[123==<100-200>]]&&echogoodgood#可以没有上下限,默认下限为0,上限为正无穷%[[123==<100->&&123==<-200>]]&&echogoodgood#可以没有上下限,那么会匹配任意正整数和0#这个可以用来判断字符串是否构成整数#[[123==<->]]&&echogoodgood#(1|2|...)用于同时判断多个条件,只满足一个条件%[[ab==(aa|ab)]]&&echogoodgood#如果要在括号中使用-或^,只需放在最后,不用转义%[[-^3==[a-c-][3^-][3^-]]]&&echogoodgood以上就是通配符的基本用法,总结一下。通配符含义*任意数量的任意字符?任何字符[abcd]abcd1中的任何字符除abcd之外的任何字符[a-c]a和c之间的字符[a-cB-Dxyz]a和c,B和D之间以及xyz中的一个字符<1-100>整数between1and100<-50>anintegerbetween0and50<100->anintegerthan100<->anypositiveintegersum0增强版的通配符zsh也支持增强版的通配符,功能更多。如果使用增强型通配符,需要先在代码中加入setoptEXTENDED_GLOB。通配符含义匹配例子^abc除abc以外的任何字符串aaaabc^abc以abc开头,但后面的字符串不是abcabcabda*c~abc匹配a*c但不是abc字符串0)aaaab##oneormorebb(ab)##oneormoreababab(#i)abc忽略大小写abcAbC(#i)ab(#I)c忽略大小写ab然后cABc(#l)aBca和c忽略大小写,但是B必须大写aBcaBC(#a1)abc最多可以(或多或少)错一个字符abca2c或ab或abcd另外还有一些更高级的用法,暂时略过。先总结一下字符串的内容,后面的文章会继续涉及到字符串,因为数组和哈希表的内容通常都是字符串,在处理目录文件的时候也会涉及到很多字符串操作。将有新的字符串处理方法。此外,如果我发现使用字符串的新方法或技巧,这些文章也会更新。参考http://www.bash2zsh.com/zsh_r...本文不再更新,全系列文章更新维护在这里:github.com/goreliu/zshguideWindows、Linux付费解决方案,Shell,C,C++,AHK,Python,JavaScript,Lua等相关问题,定价灵活,欢迎咨询,微信ly50247。abcd?
