正则表达式随笔

所谓正则表达式其实就是用一串模版字符串去匹配目标字符串。

1.添加引用using System.Text.RegularExpressions;

2.  

       TextBox txt=new TextBox();

        txt.TextChanged += (sender, e) =>

       {

           if(Regex.IsMatch(txt.Text,"^150.*"))
           {
                MessageBox.Show("匹配成功");
            }

           else

          {

               MessageBox.Show("匹配失败");

          }

       }

       这是一种写法,还可以这样写:

       Regex r=new Regex(); 

       bool is_match= r.IsMatch(txt.Text,"^150.*");

其中双引号内为正则表达式的内容, ^是很多元字符中的一种,代表开头,即以150开头的

 . 代表除了换行符外的任意字符,* 代表前面的 . 可以是任意数量的

所以整句话的意思就是以150开头的,后面跟除了换行符外的任意数量的任意字符串都可以匹配成功。

还有各种各样的元字符,这里不做详述,网上一大堆


*****************************************2016.10.24    狂拽酷炫掉渣天的分割线*****************************************

最近遇到一个网页http请求,返回的字符串里面会随机插入代码,但是这段代码是以XML的格式加进去的,
比如300033,返回的字符串里就是<a data=statid="c-cdmar" \n\t\t\t\t code="300033" class="eee">300033></a>  大致是这样的。
 
用正则我是使用这一串 Regex r=new Regex("<a(.|\n)*?/a>");
解释下
<a匹配<a,
(.|\n)匹配包括换行符在内的任意字符,为什么呢?因为字符串里面参杂了/n这种换行符
*?是一个懒惰型数量匹配,什么意思呢?
举个例子假如字符串为“<a data="dd" /a> 我是一串啦啦啦 <a data="cc" /a> 我是一串拉拉”
实际上我们想得到<a data="dd" /a>和<a data="cc" /a>,如果用*的话则会得到<a data="dd" /a> 我是一串啦啦啦 <a data="cc" /a>  单独用*的话则会把整一串返回
用了*?之后 即可得到两串,即*为贪婪型匹配,而*?为懒惰型匹配

posted @ 2016-09-19 10:07  birdhumen鸟人  阅读(80)  评论(0编辑  收藏  举报