正则表达式

正则表达式: Regular Expression
    字符串是计算机应用中最广泛的处理对象之一,(网页,文档),并且
    字符串组合规则形式多样,比如
        数字字符串
        C语言标识符
        IP地址字符串
        URL字符串(统一资源定位符)
        。。。
    上面这些都是我们程序设计需要处理的对象,现在的问题是:计算机要处理这些
    字符串,首先需要某种语言去描述这些字符串的规则
    ==>正则表达式,它就是描述某一特定规则的表达式
        [0-9]+   代表数字
        
正则表达式的字符组成
    正则表达式是由一些字符去描述规则,在正则表达式中有两类字符
        (1)元字符(Meta Character):不代表自己,代表某个特定的字符或多个字符
        (2)普通字符:仅代表自身的字符.  \元字符 ==> 普通字符
        
正则表达式有不同的流派(Egrep,java,C#)很多语言都用到了正则表达式,但是这些语言
    中用来描述字符串规则的"元字符"不是都一样的,我们称正则表达式有不同的流派。
    
元字符(Meta Character):不代表自己,代表某个特定的字符或多个字符
    .   匹配任意单个字符,英文字母,数字,。。。以及它本身
    []  字符组。从[]内任选一个字符  如[0-9]代表任意一个数字字符
    [^] 字符组。从[]外任选一个字符  如[^0-9]代表任意一个非数字字符
        注意[]内只有-  ^ 是元字符
    \d  digital 代表一个数字字符 \d <=> [0-9]
    \D  digital 代表一个非数字字符 \D <=> [^0-9]
    
    \w  匹配字母、数字、下划线 [a-zA-Z0-9_]
    \W  匹配非字母、数字、下划线 [^a-zA-Z0-9_]
    
    \s  匹配空白字符  [\n\t\r\f]
    \S  匹配非空白字符 [^\n\r\r\f]
    
    \b 匹配单词边界
        eg:  \bword\b
            "hello word 123" ==> 匹配
            "helloword123"  ==> 不匹配
            
    * 匹配0个或多个先前字符(先前模式) 如 .*  表示任意字符串
            [a-zA-Z_][a-zA-Z0-9_]* 表示匹配C标识符
    ?匹配0个或1个先前字符(先前模式)  如 a? 匹配  空 或 a
    + 匹配一个或多个先前字符(先前模式)  如 a+  匹配 a aa aaa aaaa ..
    {数字} 匹配固定数目的先前字符(先前模式) 如 a{5} 匹配 aaaaa
    {最小数目,最大数目}  如 a{1,3} 匹配 a  aa  aaa
    {最小数目,}    如 a{3,}  匹配 aaa aaaa  ....
    
    () 作为一个整体,子模式, 如(abc){1,3}
        ==>  abc
             abcabc
             abcabcabc
             
    |  二选一  如 (abc | 123) 匹配  abc 或 123
        (abc | 123 | 456) 匹配 abc 或 123 或 456
    ^ 匹配行首  ^a匹配以a开头的行
    $ 匹配行尾  a$匹配以a结尾的行
          
    练习:用正则表达式描述IPV4的网络地址
        ([0-9]{1,3}\.){3}[0-9]{1,3}
        
grep命令:
    grep(egrep):用来在文本文件里查一个特定的字符串,
                egrep用的是扩展的正则表达式
                
    grep options  "正则表达式" filenames
        options:
            -n  显示行号
            -E  egrep用的是扩展的正则表达式
            -i  ignore 在字符串比较时忽略大小写
            -#  表示同时显示匹配行的上下行
            -c count 打印每个文件里匹配行的个数
            --color=always  高亮显示  
            --color=never   不高亮显示
            --color=auto    自动
            -H  显示文件名
            -h  不显示文件名
    eg:    
    grep -n -E  --color=always -H  "([0-9]{1,3}\.){3}[0-9]{1,3}"  1.txt     
    
    练习: 查找1.txt 里的大于1000的数字    
        grep -n -E --color=always -h "[1-9][0-9]{3,}" 1.txt
    

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值