正则表达式

正则表达式(一)

  1. 基本语法

    1)行的起始和结束

        **脱字符号^** : 代表一行的开始
    
        **美元符号$** : 代表一行的结束
    
    exp:    ^cat: 以cat开头的行
    
            cat$:以cat结束的行
    
            ^$:空行
    

    注意: 匹配的是一个位置 而不是具体的文本

    2)字符组
    字符组[…]: 列出在某处希望匹配的字符 或的意思

        exp:   [Ss]mith 匹配Smith或者smith
    
                <H[123456]>匹配<H1><H2>...
    

    字符组元字符 - 表示一个范围

    exp:   [0123456789] = [0-9]
    
            二十六个字符 = [A-Za-z]
    

    注意 只有在字符组内部连字符才是元字符 否则就只能匹配一个普通的字符符号而不是一个范围

    排除型字符组[^…]: 匹配任何未列出的字符

    exp:   [^1-6]:匹配除了1-6之外的任何字符
    
            q[^u]:匹配字母q后面不是u的英文单词
    

    注意:排除型字符组表示‘匹配一个未列出的字符’ 而不是不要匹配列出的字符 如上面例子中的q[^u]就无法匹配 Iraq(q后面没有字符【手动忽略换行符】)和Qantas(Q为大写)

    3)用点号匹配任意字符

    点号 . : 用来匹配任意字符的字符组的简便写法

    exp:  需要搜索 16/11/19、16.11.19、16-11-19 可以使用16[-./]11[-/.]19 也可以尝试用 16.11.19 (不精确)
    
    注意:如果写成了[.-/]的话 由于-连字符出现在字符组内且不在字符组开头 所有表示的是范围 并不匹配
    

    4)多选结构

    **或|**:同时匹配其中的一个正则表达式
    
    exp:  gray|grey = gr(a|e)y 用括号来划定多选结构的范围
    
        注意:  gr[a|e]y 并不符合要求 原因是出现在字符组中的元符号都只是简单的表示这个普通符号不具有特殊意义 而括号()在正常情况下是元符号
    
        gr[ae]y和gr(a|e)y 的区别:一个字符组只能匹配目标文本中的单个字符,而多选结构|自身可能就是一个正则表达式
    

    5)忽略大小写

    **不区分大小写 -i **
    

    6)单词分界符

    **元字符序列 \< and \>** 
    

元字符小结

元字符名称匹配对象
.点号单个任意字符
[…]字符组列出的任意字符
[^…]排除型字符组未列出的任意字符
^脱字符行的起始位置
$美元字符行的结束位置
\<反斜线小于单词的起始位置(某些版本的egrep可能不支持)
>反斜线大于单词的结束位置(某些版本的egrep可能不支持)
|竖线匹配分割两边的任意一个表达式
(…)括号限制竖线的作用范围

注意:
1. 字符组外 点号是元符号

字符组内 连符号是元符号

脱字符在外部表示开启位置 在内部表示排除的意思

7)可选项元素

**问号?**: 容许这个字符出现或者不出现

**加号 + **: 容许之前紧邻的元素出现一次或多次

**星号 * ** : 容许之前紧邻的元素出现任意多次或者不出现

exp:
    匹配color和colour : colou?r
    匹配<HR size = 14> 
        <HR( +size *= *[0-9]+)? *>
符号次数含义
?0/1单次可选
+1~n任意次数可选
*0~n至少一次

8)规定次数范围

区间两次{min,max}: 出现次数在min到max之间

9)括号及反向引用

在一个表达式中使用多个括号,其中的子表达式可以用\1,\2,\3来表示

10)转义符号

转义符号\ 匹配元字符对于的普通字符

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值