zoukankan      html  css  js  c++  java
  • 正则表达式回顾

    ---------以前根据一讲师总结:

    1.  .点表示任意单个字符(出 );

    2. a.b--->a2b a.b a*b都可以,但是acvb,不可以单个字符,a..b就可以了;

    3.[]:a[axy]b--->aab,axy都可以,就是三者中的任意一个;

    4.a[0-9]b:--->a0b;可以;

    5. a[a-z0-9]b--->记住只能为1个;要么数字要么是字母;

    6.a[^xyz],取反,只要不是这三者中的任何一种;

    7,z|kk,z或是kk,而不是zk或是kk,|优先级比较低;当然可以改成(a|k)k;就行了;括号改变优先级;

    8.[0-9a-zA-Z]和w;w还包含汉子;

    9.abc*,标识*前面的一个字符出现任意次;若为abc的话:(abc)*;

    x(abc)*y---》匹配的是xabcy xabcabcy都可以;

    10.  +限定符;至少出现一次;

    11. ?:0-1次;

    12.x(abc){5}y:标识x和y之间必须有5个abc;  {n}一定出现n次;

    13.{n,m}:标识 n-m次;>=5&&<=10

    14.{n,}标识至少n次;

    15.[^]取反,没有中括号,必须以什么开始,^abc:以abc开始;

    16.xyz$:标识以xyz结尾;^xyz$:标识必须是xyz;

    17.adz:a3z;d==[0-9]

    18: ad{5}z ,a12345z;

    19:D:表示0-9除外,类似取反;

    20: s 空白格;看不到的字符都是空白符;

    21: S 非空白符;

    22: W 取反 去汉子和数字 字母;js内不支持汉子;

    23 ^z|food$---->标识要么以z开头要么以food结尾;因为优先级;

    24:z|food:标识只要字符串中出现z或者food就可以;

    25:^(z|f)ood$:这个标识要么是zood要么是food;

     if (Regex.IsMatch(Console.ReadLine(), patten))

     string s=@"dsdf";string s=@"dsdf";

    ----正则表达式提取字符串:(只提取第一个)

    Match ma=Regex.Match(msg,reg);

    ---输出的ma.value;

    ----ma.success 属性判断是否匹配成功;

    -------------------------提取的是所有的;并逐一输出字符串;

     MatchCollection mc = Regex.Matches("","");

                foreach (Match mn in mc)

                {

                    Console.WriteLine(mn.Value);

                }

    -------------------可以通过这种方式提取web页面的email地址;

    提取组;比如邮箱。如果我们想知道用各种邮箱的种类个数;

    给正则加()括号来提取组;一个字符串有三个()括号说明有三个组;

    通过获取 matchcollection 遍历这个集合得到match,

    match.Groups[1].value,match.Groups[2].value即可;切结match.Groups[0]标识的是全部的完整的匹配项;

    ---------正则表达式的贪婪模式:当根剧正则提取字符时,就是,

    当一个字符满足要求,多个也满足要求 ,但是Regex.Match只能提取一个,结果它提取的是

    最长的那个。这就是贪婪模式;(当出现矛盾时候)

    字符串:hellow worlddddkkkkkkkkkkkkk 正则:“[a-z]+”,

    得到的是 hellow 而不是后面的worldddkkkkk, match只取第一个;

    ------正则会尽可能的让自己都匹配上;

    比如str="1111.111.1111。"; reg=".+。";和reg=".+"获取到的结果相同,但是是有区别的。

    reg=".+。";中的句号会匹配字符串中的句号。

    -----比如:str="11。  1。" reg=".+?。"  最终匹配的是 "11。" ,因为会让自己匹配更多。

    ---------序列化的对象必须标记上[serializable],父类也要标记;父类的字字段火属性也必须为可

    序列化;@"^.+\(.+).[a-zA-Z]+$"

    -----------正则表达式提取路径中的文件名:

     string url = @"....guozesdfsfnggsdfuo.txt";

                string reg = @"^.+\(.+).[a-zA-Z]+$";

                Match ma = Regex.Match(url, reg);

                if (ma.Success)

                {

                    string s = ma.Groups[1].Value;

                    Console.WriteLine(s);

                }

    ----------------Regex.Replace("hah     ahah  aa",@"s+","");标识把多个空格替换为一个空格;

    ----------------

    专业名词UBB,html编辑器,发表论坛,为了防止用户写有害脚本,采用特殊格式;[/athha],标识图片的

    路径格式,会有正则表达式进行翻译,匹配,转换为路径。

    ----------判断发表的帖子是否有敏感词;可以用正则表达式; "guo|ze|"

  • 相关阅读:
    POJ3693 Maximum repetition substring —— 后缀数组 重复次数最多的连续重复子串
    SPOJ
    POJ2774 Long Long Message —— 后缀数组 两字符串的最长公共子串
    POJ3261 Milk Patterns —— 后缀数组 出现k次且可重叠的最长子串
    POJ1743 Musical Theme —— 后缀数组 重复出现且不重叠的最长子串
    SPOJ
    AC自动机小结
    HDU3247 Resource Archiver —— AC自动机 + BFS最短路 + 状压DP
    POJ1625 Censored! —— AC自动机 + DP + 大数
    Herding
  • 原文地址:https://www.cnblogs.com/guozefeng/p/3376933.html
Copyright © 2011-2022 走看看