学习笔记 for 正则表达式30分钟入门教程

《正则表达式30分钟入门教程》原文链接

http://deerchao.net/tutorials/regex/regex.htm

 

感觉熟悉了正则表达式,在日常搜索时,感觉打开了新的一扇门。

 

下面是自己总结的一些关键概念。

 

元字符
    .    匹配除换行符以外的任意字符
    \w    匹配字母或数字或下划线或汉字
    \s    匹配任意的空白符
    \d    匹配数字
    \b    匹配单词的开始或结束
    ^    匹配字符串的开始
    $    匹配字符串的结束

大括号 -- 用于指定重复次数
    {n}        重复n次
    {n,}    重复n次或更多次
    {n,m}    重复n到m次

    用单个字符有一些简化的写法
    *    重复零次或更多次
    +    重复一次或更多次
    ?    重复零次或一次
    
中括号  -- 个人理解中小括号其实都算分组,只是中括号里面的元素是或的关系,就是存在一个即可
           比如[abc] 可以匹配到a、b、c

小括号  --  个人理解中小括号其实都算分组,只是小括号里面的元素是与的关系,必须要全部匹配上才可以
            比如(abc) 只可以匹配到abc

分枝条件
    通过|来实现
    
反义
    \W    匹配任意不是字母,数字,下划线,汉字的字符
    \S    匹配任意不是空白符的字符
    \D    匹配任意非数字的字符
    \B    匹配不是单词开头或结束的位置
    [^x]    匹配除了x以外的任意字符
    [^aeiou]    匹配除了aeiou这几个字母以外的任意字符
            
后向引用  -- 用小括号捕捉到的字符串,可以在用于后面字符的匹配
            比如 \b(\w+)\b\s+\1\b可以用来匹配重复的单词,像 go go, 或者 kitty kitty。      
            如果需要自己指定组名,可以改为  \b(?<word>\w+)\b\s+\k<word>\b
           

            需要反向引用,则需要先用小括号捕获:

            (exp)                    匹配exp,并捕获文本到自动命名的组里
            (?<name>exp)    匹配exp,并捕获文本到名称为name的组里,也可以写成(?'name'exp)
            (?:exp)                匹配exp,不捕获匹配的文本,也不给此分组分配组号
            \k<name>            使用前面用name匹配到的字符串
            
零宽断言
    (?=exp)        匹配exp前面的位置
    (?<=exp)      匹配exp后面的位置


负向零宽断言    
    (?!exp)        匹配后面跟的不是exp的位置
    (?<!exp)    匹配前面不是exp的位置
    
注释
    (?#comment)    这种类型的分组不对正则表达式的处理产生任何影响,用于提供注释让人阅读
    
贪婪与懒惰 --
    *、+限定符(以及其他不确定匹配次数的)都是贪婪的,因为它们会尽可能多的匹配文字,只有在它们的后面加上一个?就可以实现非贪婪或最小匹配。

        *?    重复任意次,但尽可能少重复
        +?    重复1次或更多次,但尽可能少重复
        ??    重复0次或1次,但尽可能少重复
        {n,m}?    重复n到m次,但尽可能少重复
        {n,}?    重复n次以上,但尽可能少重复
        

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值