C#正则表达式处理数据

时间:12-06-26 栏目:C#开发 作者:kyle 评论:0 点击: 6,601 次

在C#开发中,正则表达式是非常常用的工具。

下面SEO小五来介绍一下在C#中正则表达式的几种简单用法。

一、判断匹配

        public static bool IsMatch(string txt, string regexString, RegexOptions regexOption)
        {
            try
            {
                Regex testRegex = new Regex(regexString, regexOption);
                if (testRegex.IsMatch(txt))
                    return true;
                else
                    return false;
            }
            catch (ArgumentException ex)
            {
                return false;
            }
        }

这是比较完整的判断代码。具体我也不解释了,满足条件返回真,否则返回假。

二、匹配一条数据。

        public static string RegexMatch(string txt, string RegexString)
        {
            string MatchVale = string.Empty;
            Regex r = new Regex(RegexString, RegexOptions.IgnoreCase);
            Match m = r.Match(txt);
            if (m.Success)
            {
                MatchVale = m.Value;
            }
            return MatchVale;
        }

返回匹配到的第一条数据。

三、匹配多条数据。

        public static ArrayList RegexMatches(string txt, string regexString)//自定义正则
        {
            ArrayList result = new ArrayList();
            try
            {
                MatchCollection matchesFound = Regex.Matches(txt, regexString, RegexOptions.IgnoreCase);
                if (matchesFound.Count > 0)
                {
                    for (int i = 0; i < matchesFound.Count; i++)
                    {
                        result.Add(matchesFound[i].Value);
                    }
                }
            }
            catch (Exception ex) { MessageBox.Show("正则出错:" + ex.Message); }
            return result;
        }

匹配到的数据会放进Arraylist里面,当然你也可以放到List或者其它数组里面更方便处理。

四、匹配多条数据并指定Group

        public static ArrayList RegexMatches(string txt, string regexString, string grouptext)//自定义正则
        {
            ArrayList result = new ArrayList();
            try
            {
                MatchCollection matchesFound = Regex.Matches(txt, regexString, RegexOptions.IgnoreCase);
                if (matchesFound.Count > 0)
                {
                    foreach (Match match in matchesFound)
                    {
                        result.Add(match.Groups[grouptext].Value);
                    }
                }
            }
            catch (Exception ex) { MessageBox.Show("正则出错:" + ex.Message); }
            return result;
        }

神马是Group,这个都不知道,就该去看看基本的正则了。这个可以根据Group来自定义匹配。

五、匹配结果并替换一次

        public static string RegexReplace(string txt, string regexString, string replaceto, RegexOptions regexOption)
        {
            try
            {
                string returnstr = "";
                Regex replaceRegex = new Regex(regexString, regexOption);
                returnstr = replaceRegex.Replace(txt, replaceto);
                return returnstr;
            }
            catch (ArgumentException ex)
            {
                return txt;
            }
        }

这个可以匹配某个结果,并统一替换成一个字符。万一根据结果来替换肿 么办呢。

下面告诉你。

六、匹配结果并根据结果进行替换。

Regex r = new Regex("[a-zA-Z]+"); 
string str = "sdf中国人e"; 
string strResult = r.Replace(str, delegate(Match m){return m.Value.ToUpper();}); //使用的匿名委托

我没有现成的方法,只能写出来大概了。

就是匹配的结果,再去交给委托来处理,再返回。

自己测试一下是最好的。

这个是非常强大的功能。可以用匿名委托,简单一点。

七、按正则表达式分割字符串

        public static ArrayList SplitByRegexToArray(string txt, string splitRegexString, RegexOptions regexOption)
        {
            try
            {
                ArrayList rAL = new ArrayList();
                String[] splitResults;
                Regex splitRegex = new Regex(splitRegexString, regexOption);
                splitResults = splitRegex.Split(txt);
                foreach (string t in splitResults)
                    rAL.Add(t);
                return rAL;
            }
            catch (ArgumentException ex)
            {
                ArrayList rAL = new ArrayList();
                System.Console.Write("\nThere was an error in your regular expression:\r\n" + ex.Message);
                return rAL;
            }
        }

匹配之后分割字符串放入ArrayList中。

成都SEO小五提醒。for和if循环中,只有一行代码的。

尽量写成这种if() code;

for()

code;

这样写。比大括号有更好的效率。

最好能总结自己的正则匹配类。简化一切操作。

成都SEO小五嚎2句: 本文是(成都SEO小五)辛苦弄出来的,转载成都SEO小五原创的请保留链接: C#正则表达式处理数据,3Q

C#正则表达式处理数据:等您坐沙发呢!

来给哥评论评论


------====== 小五公告 ======------
成都SEO小五,专注成都搜索引擎优化。
小五善长站内外优化,C#、PHP开发,中英文SEO,Google中英文和百度优化技术。欢迎群内交流。伸手党请绕路,求资源的请绕开,求问题解答的请进群内交流。开放了一个QQ交流群:160750032。加入验证时请标注任何SEO相交字眼。友情链接直接Q我,收录正常,内容大部份原创、SEO或者程序开发、网络营销、线上推广等相关行业即可。

常用工具

赞助广告

来看过哥的人