• 正则表达式回顾


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

    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|"

  • 相关阅读:
    几个C#编程的小技巧
    用asp.net实现将上传的图片变小存入数据库
    解决sql server安装问题
    Linux三则超酷技巧
    vc编程参考站点,简要的Windows API函数大全
    声明游标
    如何把string解析为int?[C#] How to Parse a string to an int? [C#]
    SQL Server2000数据库系统表的应用
    胶囊和凸多边形的动态碰撞检测
    纹理资源管理的困惑
  • 原文地址:https://www.cnblogs.com/guozefeng/p/3376933.html
Copyright © 2020-2023  润新知