通配符和正则表达式

简介:

1、通配符

      通配符叫做文件名通配符更能突出其作用范围,因为通配符主要用于文件名的通配,可以在shell命令中使用,常用的通配符有以下几个:

      *  :星号用来匹配任意长度任意字符。

      ?  :问号用来匹配任意单个字符

      [^]  :匹配指定范围之外的任意单个字符。如

      [^a-z] = [^[:lower:]]  匹配小写字母a-z之外的任意单个字符

      []:匹配指定范围内的任意单个字符。如

           [A-Za-z]  匹配大小写字母中的任意单个字符(实验时使用[a-z]或者[A-Z]或者                          [A-Za-z]的效果等同,都是大小写全匹配,此处值得验证)

           [0-9]  匹配09之间的数字

      例:如何匹配空白字符?【使用[' ']或使用[[:space:]],单引号中间有空格】

      [[:alpha:]]  相当于[A-Za-z]

      [[:digit:]]  相当于[0-9]

      [[:lower:]]  相当于[a-z]

      [[:upper:]]  相当于[A-Z]

      [[:alnum:]]  相当于[A-Za-z0-9]

      [[:space:]]  相当于空白字符

      注意:上面几个需要使用双重中括号,否则匹配不成功,如下面的例子

[root@localhost ~]# ls
anaconda-ks.cfg  install.log install.log.syslog  
[root@localhost ~]# ls ins[[:lower:]]a*
install.log  install.log.syslog
[root@localhost ~]# ls ins[:lower:]a*
ls: ins[:lower:]a*: No such file or directory

 

正则表达式

    正则表达式(REGEXP)又分为基本正则表达式和扩展正则表达式。正则表达式和通配符不同,正则表达式是用来匹配字符串的。

 

2、基本正则表达式

      元字符

           :点用来匹配任意单个字符

     匹配次数

           :星号用来匹配其前面的字符任意次

           .* :点星号用来匹配任意字符任意次

           默认情况下正则表达式工作于贪婪的模式下(即尽可能长的匹配)

           \? :匹配其前面的字符1次或0次

           \{m,n\} :匹配其前面的字符至少m次,至多n次。

           上面两个\反斜线可以理解为是用作转义字符的。

      位置锚定

       行锚定:

           :用来锚定行首,此字符后面的内容必须在行首

           :锚定行尾,此字符前面的内容必须出现在行尾

           ^$ :空白行

       单词锚定:

           \< 或者使用\b:锚定词首

           \> 或者使用\b:锚定词尾

          例:

           如何匹配出现在行尾的root,并忽略root后标点符号的行(root[[:punct:]]*$
           
如何匹配出现在行首的root,并忽略root前空格的行?(^[[:space:]]*root

      范围匹配

           [] :匹配指定范围内的任意单个字符。如[a-z]  [A-Z]  [0-9]。和通配符中的一                         样,但此处区分大小写,即使用[a-z]或者[A-Z]或者[A-Za-z]的效果不相同。

           [^]:匹配指定范围外的任意单个字符。

      字符集合:(字符集合使用时都要使用双重中括号)

wKioL1cpmt6h-VJOAAFFGv7Qrok133.png

 

      分组匹配

           \(\):例如  \(abc\)*  表示abc作为一个整体可以出现任意次

       后向引用(和分组匹配一起使用):

           \1     引用第一个左括号以及与之对应的右括号包含的所有内容

           \2      引用第二个左括号以及与之对应的右括号包含的所有内容

           依次类推

3、扩展正则表达式

      元字符

           和基本正则表达式一样

      匹配次数

           加号相当于基本正则表达式中的\{1,\} :匹配其前面的字符至少一次。

           基本正则表达式的\{m,n\}在扩展表达式中不再需要使用反斜线。

           其他的和基本正则表达式中的一样

      位置锚定

           和基本正则表达式一样

      范围匹配

           和基本正则表达式一样

      字符集合

           和基本正则表达式一样

      分组匹配

           基本正则表达式的\(\) 在扩展表达式中不再需要使用反斜线。

      后向引用

           和基本正则表达式一样

 


本文转自 f_066 51CTO博客,原文链接:http://blog.51cto.com/ganmu/1770004,如需转载请自行联系原作者

相关文章
|
7月前
|
SQL 关系型数据库 MySQL
MySQL通配符和正则表达式
MySQL通配符和正则表达式
81 1
|
8月前
|
关系型数据库 MySQL 数据库
MySQL通配符和正则表达式(数据库学习—— 二)
MySQL通配符和正则表达式(数据库学习—— 二)
49 1
|
8月前
|
前端开发 关系型数据库 MySQL
前端知识笔记(二十九)———MySQL通配符和正则表达式
前端知识笔记(二十九)———MySQL通配符和正则表达式
67 0
|
运维
【运维知识基础篇】通配符与正则表达式
【运维知识基础篇】通配符与正则表达式
82 0
|
关系型数据库 MySQL
MySQL必知必会使用通配符和正则表达式数据过滤
MySQL必知必会使用通配符和正则表达式数据过滤
319 0
|
7月前
|
数据库 Python
Python网络数据抓取(8):正则表达式
Python网络数据抓取(8):正则表达式
74 2
|
7月前
|
自然语言处理 JavaScript 前端开发
Python高级语法与正则表达式(二)
正则表达式描述了一种字符串匹配的模式,可以用来检查一个串是否含有某种子串、将匹配的子串做替换或者从某个串中取出符合某个条件的子串等。