正则表达式回顾

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

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

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.a\dz:a3z;\d==[0-9]

18: a\d{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 = @"..\..\guozes\dfsfng\gsdfuo.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|"

posted @ 2013-10-18 23:26  aiaito  阅读(202)  评论(0编辑  收藏  举报