通配符和正则表达式
1、通配符通配符叫做文件名通配符更能突出其作用范围,因为通配符主要用于文件名的通配,可以在shell命令中使用,常用的通配符有以下几个: * :星号用来匹配任意长度的任意字符。 ? :问号用来匹配任意单个字符。 [^] :匹配指定范围之外的任意单个字符。如 [^a-z] = [^[:lower:]] 匹配小写字母a-z之外的任意单个字符 []:匹配指定范围内的任意单个字符。如 [A-Za-z] 匹配大小写字母中的任意单个字符(实验时使用[a-z]或者[A-Z]或者 [A-Za-z]的效果等同,都是大小写全匹配,此处值得验证) [0-9] 匹配0到9之间的数字 例:如何匹配空白字符?【使用[' ']或使用[[:space:]],单引号中间有空格】 [[:alpha:]] 相当于[A-Za-z] [[:digit:]] 相当于[0-9] [[:lower:]] 相当于[a-z] [[:upper:]] 相当于[A-Z] [[:alnum:]] 相当于[A-Za-z0-9] [[:space:]] 相当于空白字符 注意:上面几个需要使用双重中括号,否则匹配不成功,如下面的例子 [root@localhost ~]# ls
正则表达式 正则表达式(REGEXP)又分为基本正则表达式和扩展正则表达式。正则表达式和通配符不同,正则表达式是用来匹配字符串的。
2、基本正则表达式 元字符: . :点用来匹配任意单个字符 匹配次数: * :星号用来匹配其前面的字符任意次 .* :点星号用来匹配任意字符任意次 默认情况下正则表达式工作于贪婪的模式下(即尽可能长的匹配) ? :匹配其前面的字符1次或0次 {m,n} :匹配其前面的字符至少m次,至多n次。 上面两个反斜线可以理解为是用作转义字符的。 位置锚定: 行锚定: ^ :用来锚定行首,此字符后面的内容必须在行首 $ :锚定行尾,此字符前面的内容必须出现在行尾 ^$ :空白行 单词锚定: &; 或者使用b:锚定词首 &;或者使用b:锚定词尾 例: 如何匹配出现在行尾的root,并忽略root后标点符号的行(root[[:punct:]]*$) 范围匹配: [] :匹配指定范围内的任意单个字符。如[a-z] [A-Z] [0-9]。和通配符中的一 样,但此处区分大小写,即使用[a-z]或者[A-Z]或者[A-Za-z]的效果不相同。 [^]:匹配指定范围外的任意单个字符。 字符集合:(字符集合使用时都要使用双重中括号)
分组匹配: ():例如 (abc)* 表示abc作为一个整体可以出现任意次 后向引用(和分组匹配一起使用): 1 引用第一个左括号以及与之对应的右括号包含的所有内容 2 引用第二个左括号以及与之对应的右括号包含的所有内容 依次类推 3、扩展正则表达式 元字符: 和基本正则表达式一样 匹配次数: + 加号相当于基本正则表达式中的{1,} :匹配其前面的字符至少一次。 基本正则表达式的{m,n}在扩展表达式中不再需要使用反斜线。 其他的和基本正则表达式中的一样 位置锚定: 和基本正则表达式一样 范围匹配: 和基本正则表达式一样 字符集合: 和基本正则表达式一样 分组匹配: 基本正则表达式的() 在扩展表达式中不再需要使用反斜线。 后向引用: 和基本正则表达式一样 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |