zoukankan      html  css  js  c++  java
  • 分分钟解决正则表达式

    正则表达式在各种不同的语言中都有涉及到,但是因为其与普通语法有着较大的差异,所以会给人难懂的第一印象。本文主要讲解正则表达式的基本语法与实际应用,最后还会为大家介绍一下能提高正则表达式使用效率的软件。

    初印象:“/([A-Z])w+/”   这是什么?这就是一个正则表达式了,其删选出内容中的大写字母开头的单词,实际效果点击这里

    正则表达式的主要功能是对内容的筛选。

    格式:双斜杠,/xxxxx/,内部为正则表达式。

    建议大家边学习边在这个网页上验证实际效果:没错,点这里

    起步了

    (1):最简单的匹配是单个字母的匹配,“/w/”匹配出内容中含有w的地方,“/liufeng/”匹配出内容包含“liufeng”的地方。

    (2):稍微复杂一点点,[Ll]iufeng,f方括号内部的条件只要满足其一就可以了,所以可以匹配内容中的Liufeng与liufeng;  [a-c]匹配‘a’或‘b’或‘c’; '.'匹配除了换行符之外的任何内容。

    (3):"" :不会消耗任何字符只匹配一个位置,常用于匹配单词边界 如 我想从字符串中"This is Regex"匹配单独的单词 "is" 正则就要写成 "is"  

         不会匹配is 两边的字符,但它会识别is 两边是否为单词的边界。

        “s”:匹配空格(whitespace);

        “d”:匹配数字,等效于"[0-9]";

        "w":匹配字符;

    • /u 表示按unicode(utf-8)匹配(主要针对多字节比如汉字)
    • /i 表示不区分大小写(如果表达式里面有 a, 那么 A 也是匹配对象)
    • /s 表示将字符串视为单行来匹配

      那当我想要查找的就是这些特殊的字符怎么办?    用‘’。  ‘’能够去除符号的特殊含义,如“\d+”就能匹配到 “d+”

      将上述字母写为大写后就会获得相反的效果,如“/D”会筛选得到除了数字的内容。

     

    (4):多次匹配:注意是将符号左方的内容多次匹配。"abc+" 匹配“abc”,“abccccc”。"(an)+" 匹配 “ananan”。

    • * (zero or more times)
    • + (one or more times)
    • ? (zero or one time)
    • {n} (exactly n times)
    • {n,} (at least n times)
    • {n,m} (at least n times but no more than m times)
    •  | (or)   

    (5):^:匹配开头,$匹配结尾。

      当你想要找到注释是就可以这样做: “^\s+ (.+)s+\$”  .

    (6)捕获分组:

      "(exp)"    匹配exp,并捕获文本到自动命名的组里

      "(?<name>exp)"   匹配exp,并捕获文本到名称为name的组里

      "(?:exp)"  匹配exp,不捕获匹配的文本,也不给此分组分配组号

      以下为零宽断言

      "(?=exp)"  匹配exp前面的位置

      如 "How are you doing" 正则"(?<txt>.+(?=ing))" 这里取ing前所有的字符,并定义了一个捕获分组名字为 "txt" 而"txt"这个组里的值为"How are you do";

      "(?<=exp)"  匹配exp后面的位置

      如 "How are you doing" 正则"(?<txt>(?<=How).+)" 这里取"How"之后所有的字符,并定义了一个捕获分组名字为 "txt" 而"txt"这个组里的值为" are you doing";

      "(?!exp)"  匹配后面跟的不是exp的位置

      如 "123abc" 正则 "d{3}(?!d)"匹配3位数字后非数字的结果

      "(?<!exp)"  匹配前面不是exp的位置

      如 "abc123 " 正则 "(?<![0-9])123" 匹配"123"前面是非数字的结果也可写成"(?!<d)123"

     

    参考文章:http://www.cnblogs.com/China3S/archive/2013/11/30/3451971.html

           http://stackoverflow.com/questions/4736/learning-regular-expressions

    本文为作者原创,如需转载请注明出处:http://www.cnblogs.com/lflj/

  • 相关阅读:
    常见的设计模式:单例模式、工厂模式、观察者模式、装饰模式与适配器模式
    WCF、Web API、WCF REST、Web Service之区别
    Asp.Net Web API VS Asp.Net MVC
    sql server 2008 评估期已过期解决办法
    IIS6.0中布署MVC站点
    SQL Server类型与C#类型对应关系
    经纬度 lbs 笔记
    C#实现用Newtonsoft.Json 4.5.11解析人人网院校信息并获取院系信息
    当前上下文中不存在名称"Session"
    [ASP.NET]HttpCookieCollection to CookieCollection的最简单方法
  • 原文地址:https://www.cnblogs.com/lflj/p/6538127.html
Copyright © 2011-2022 走看看