加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

正则表达式初解

发布时间:2020-12-14 05:34:35 所属栏目:百科 来源:网络整理
导读:正则表达式(Regular Expression) 是很强大的对字符串检索,过滤,替换操作匹配的工具,在平时的工作中经常会有查找符合某些复杂规则的字符串的需要。 正则表达式就是用于描述这些规则的工具 。正则表达式分为基础正则表达式,扩展正则表达式。下面简单介绍 ?

正则表达式(Regular Expression) 是很强大的对字符串检索,过滤,替换操作匹配的工具,在平时的工作中经常会有查找符合某些复杂规则的字符串的需要。正则表达式就是用于描述这些规则的工具。正则表达式分为基础正则表达式,扩展正则表达式。下面简单介绍

?

?

基础正则表达式

  基础正则表达式可以按元字符来分类,至于什么是元字符先别管,

  元字符可分为四类,字符匹配,次数匹配,位置匹配,分组

 ? ?1? 字符匹配:以某些特定的符号来匹配某些出现不规律的字符

  .? ? ?     ??匹配任意单个字符数字字母换行符不行

  []? ?      匹配方括号中的任意单个字符 如:[abcd]? 匹配a,b,c,d四个字符中的任意一个 [0-9]匹配任意数字一次? [a-z] 匹配任意字母一次

  [^]??     这个与上面的正好相反,匹配非方括号中的字符任意一次,如[^abcd] 匹配非a,d 以外的任意字符,表示取反

  [:alnum:]? ? ? ? ? ? 匹配字母和数字 [A-Za-z0-9]

  [:alpha:]   ? ? ?字母大小写字符,亦即 A-Z,a-z

  [:lower:]      小写字母?

 ? ??[:upper:]? ? ? ? ? ? ? ?大写字母?

  [:blank:]     空白字符(空格和制表符)

  [:space:]     水平和垂直的空白字符这个匹配包含[:blank:]

  [:cntrl:]     ? 不可打印的控制字符(退格)

  [:digit:]     ? 十进制数字? ? ?[0-9]

  [:xdigit:]    十六进制数字??

  [:graph:]      可打印的非空白字符?

  [:print:]? ? ? ? ? ? ? ? ? ?可打印字符?

  [:punct:]? ? ? ? ? ? ? ? ? 标点符号?

  2.次数匹配,上面介绍了以某个特定的符号或者标志来匹配字符,但是当往往需要处理的字符或者文本都很大,所以,次数匹配就很重要了。

     猜到了吗? 没错,一样的次数匹配就是以某些特定的符号来代表字符出现的次数。如下

  *     ?  匹配前面的字符任意次,包括0次 但是它会尽可能多的匹配次数,称之为贪婪模式,所以需要注意。如.*可以匹配空行,也能匹配任意内容

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

  +? ? ? ? ? ? ? 匹配其前面的字符至少1次?

  {n}? ? ?   ? ?匹配前面的字符n次? ? ?

  {m,n}  ? ?  匹配前面的字符至少m次,最多n次?   

  {,n}     匹配前面的字符至多n次?

  {n,}? ? ? ? ? ? ? ? 匹配前面的字符至少n次?

?

  2. 位置匹配,什么叫位置匹配,在处理的文件的过程中,我们很多时候无法确定他是第多少个字符,前面是什么后面是什么,我们只需关心的是开头和结尾

   ^? ? 匹配行首

  $? ? ?匹配行尾

  以上两个可以组合可以匹配空行如:^$?

  那么? ^[[:space:]]*$ 代表什么意思?

  位置匹配还有 /< 与? />? ? 什么意思呢 ?? 如 /<a? 这个表示的是匹配a开头的单词? 反之? ?a/>匹配以a结尾的单词? 这就是单词位置匹配

  需要注意的是数字下划线不算单词 /<? 与? />? ?可以用 /b来代替? ?/ba 与 a/b?

  &;word&; 就是匹配整个单词?

  1.3.4 分组,讲一个或者多个字符分在一起合为一个整体,方便对它的引用

  ()? ? ? ? ? ?如 (hello linox)? 这样就把两个字符串合成一个组,可以使用1 对他引用,如果有第二个组就使用2引用,以此类推,

        当组当中包含组时,最外的组是第一个组? 如 (group1(group2))? 最外的组是1组但是他的内容是group1group2

?

  |? ? ? ? ? ? 或者符号? 如? a|b 匹配a或者b

扩展正则表达式

  扩展正则表达式是都基础正则表达式的延申,内容不多,但是很重要,是可以说是对基础正则的简化,因为扩展正则表达式很多特定的匹配不需要符号

  扩展正则表达式的字符匹配与基础正则一样。

  次数匹配

    

 ? ?*     ?  匹配前面的字符任意次,包括0次 但是它会尽可能多的匹配次数,称之为贪婪模式,所以需要注意。如.*可以匹配空行,也能匹配任意内容

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

  +? ? ? ? ? ? ? 匹配其前面的字符至少1次?

  {n}? ? ?   ? ?匹配前面的字符n次? ? ?

  {m,n}  ? ?  匹配前面的字符至少m次,最多n次?   

  {,n}     匹配前面的字符至多n次?

  {n,}? ? ? ? ? ? ? ? 匹配前面的字符至少n次?

  看到没有,扩展正则其实与基础正则一样,只是扩展正则不需要转义而已  

  总结:基础正则与扩展正则,但是在Linux系统中有些命令只可使用基础,又命令使用扩展,也有两者皆可。使用方式一样

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读