您的位置:首页 > 编程语言 > C#

C#基础加强第四天总结--正则表达式和XML

2015-07-19 14:44 507 查看
正则表达式和XML

1.    正则表达式

    是一个用来进行匹配的包含元字符的字符串

    

    C#中用System.string和System.Text.StringBuilder的各种方法执行的任务,

    如果使用正则表达式,这些代码一般可以压缩为几行

    

    匹配汉字 汉字使用unicode编码的

    常见的元字符

    a) ^123456$ 限定开头结尾 于是只能匹配123456

    b) \d     代表一个数字 d--digit

    c) +     紧挨着+的至少出现一次

    d) []    匹配其中任意一个

    e) [^]    <[^>]+> -->刚好<> 可以用来找到所有的html标签

    f) \w   [a-z0-9A-Z]等价于字符类

    g) \s    space 匹配一个空白符(回车 换行)

    h) \S   匹配任意一个非空白符  [\s\S] --> 任意字符

    i) ?    紧挨着?匹配0次或1次  https?//  s-->security(加密过)

    j) *    紧挨着*出现0次或多次  

            匹配任意的整数 ^(-?[0-9]\d*|0)$  |--或--优先级最低

            匹配任意的数字 ^(-?[0-9]\d*|0)(\.\d+)?$

    k) {n}    前面紧跟的字符出现n次

    l) {n,m}

    m) .    表示任意的非换行字符  <--> /s/S包括了换行

    n) ()     分组

    

2.    常见元字符总结

    基本元字符:  .  []  |  ()

    限定元字符:  +  *   ?  {n}  {n,}  {n,m}

    首位元字符:  ^  $

    简写元字符:  \d  \D  \w  \W  \s \S

    

3.    C Sharp中使用正则表达式  -- 匹配

    Regex类 -- Regular Expression

    public static bool IsMatch(string input,string pattern)

    使用正则表达式进行匹配

    

    public static Match Match(string input,string pattern)

    public static MatchCollection Matches(string input,string pattern)

    

    Match类  表示单个正则表达式匹配的结果

    属性:success  index  length  value  groups

    

4.    正则表达式分组--在一个匹配中再拆分提取需要的

    在正则表达式中如果有圆括号,表示有一个分组

    组的编号:整个匹配结果为0号,从左往右数,见到"("就编号,编号从1开始

    

5.    WebClient  

    提供向 URI 标识的资源发送数据和从 URI 标识的资源接收数据的公共方法

    DownloadString()方法

    DownloadFile()

    

6.    try -- catch 在catch中写异常log

    try

    {

        webClient.DownloadFile(url,@"imgs\"+name);

    }

    catch(Exception ex)

    {

        File.AppendAllText("log.txt",string.Format("{0}\r\n{1}\r\n\t{2}\r\n\r\n",

        DateTime.Now, ex.Message, ex.stackTrace));

    }

    

7.    贪婪模式

    默认正则表达式的匹配是有权级之分的

    两个或多个任意多个匹配中,如果互相冲突,左边的优先,右边的任意多个都是最低级

    如果左边的去掉了优先级,右边的还是从左开始考虑优先级

    取消优先级的方法就是加?

    

    在写正则表达式的时候一开始不考虑贪婪模式,当取到的结果比预期的多的时候,再考虑

    在使用正则表达式的时候,我宁可分步骤来解决,也不一步到位

    

8.    C Sharp中使用正则表达式  -- 替换

    public static string Replace(string input,string pattern,string replacement)

    问题:把2014年5月6日 --> 2014-5-6

    Regex.Replace(str,@"年-月", "-").Replace("日","");

    第二个Replace()是字符串的方法

    

    --> 5/6/2014  --> 替换字符串中可以引用前面匹配到的数据 第几组用$表示

    Regex.Replace(str,@"(\d+)年(\d+)月(\d+)日", "$2/$3/$1")

    

9.    XML

    语法规范

        <标签名 属性="值">数据</标签名>

        <标签名 属性="值" />

    结构

        1)xml文档头

        2)有且只有一个根节点

        3)XML中所有的标签:数据标签、注释标签(所有的标签都可以称为节点,但是数据称为元素)

        4)在XML中注释的结构有两种:<!--注释内容-->  <![CDATA[用于存储数据的注释]]>

        vs2010--工具--代码段管理器--Visual C#--

        C:\Program Files\Microsoft Visual Studio 10.0\VC#\Snippets\2052\Visual C#

        看for的代码段

            <Code Language="csharp"><![CDATA[for (int $index$ = 0; $index$ < $max$; $index$++)

                {

                $selected$ $end$

                }]]>

            </Code>

    手写XML文件

        1)添加文档头<?xml version="1.0" encoding="gb2312"?>

        2)添加根节点

        3)添加数据节点

        

10.    使用CSharp操作XML

    1)传统的XML处理

        XmlDocument  XmlElement  XmlAttribute

        

        //写XML

        XmlDocument xdoc = new XmlDocument();

        XmlDeclaration xdec = doc.CreateXmlDeclaration("1.0","gb2312",null);

        xdoc.AppendChild(xdec);

        

        XmlElement xele = xdoc.CreateElement("root");

        xdoc.AppendChild(xele);

        

        XmlElement xele01 = xdoc.CreateElement("标签");

        xele.AppendChild(xele01);

        

        //写入文本数据

        XmlText txt = xdoc.CreateTextNode("我是一个文本节点");

        xlel01.AppendChild(txt);

        

        //属性=值

        XmlAttribute xattr = xdoc.CreateElement("我是一个属性");

        xattr.value = "属性值";

        xele01.SetAttributeNode(xattr);

                    

        xdoc.Save("myfirstxmlfile.xml");

        

        //读XML --> 比较复杂?

        XmlDocument x = new XmlDocument();

        x.Load("myfirstxmlfile.xml");

        

        x.GetElementById...

        xmlElement.GetAttribute("name");

    2)Linq to XML

        XDocument  XElement  XAttribute

        

        查询静态的XML文档

            var query = from people in xdoc.Descendants(“PERSONA”) select people.value;

            foreach(var item in query){}

        查询动态的XML文档

        目前,Internet上有许多动态的XML文档。给指定的URL端点发送一个请求,就会找到博客种子等许多提供XML文档的内容。

        这些种子可以在浏览器上查看,或者通过RSS聚合器查看,或用作纯粹的XML

            XDocument xdoc = XDocument.Load(@"http://constfafa.blog.csdn.cn/Rss.aspx");

   
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: