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

正则表达式和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");
   
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值