tnblog
首页

c#正则表达式操作字符串

87人阅读 2019/5/13 17:58 评论:0 手机浏览 收藏
分类: .NET


先来个.*?的解释吧

.   :  单个任意字符

*  :  重复多次、贪婪匹配

?  :  重复一次、非贪婪匹配

 

提取一个字符串的中文


string content = "SS上海xx北京";
List<string> chs = new List<string>();
Regex reg = new Regex("[\u4e00-\u9fa5]+");
foreach (Match v in reg.Matches(content))
    chs.Add(v.Value);

效果如下:


正则表达式拆分字符串


string content = "SS上海xx上海";
string[] sArray = Regex.Split(content, "上海", RegexOptions.IgnoreCase);

这个很简单,效果如下:

他可以根据一个字符串去拆分,后面的参数是忽略大小写



例子2:

拆分"aa<em>哈哈</em>bb<em>嘻嘻</em>cc"成 aa,bb,cc

  string[] str = Regex.Split(title, @"<em>.*?</em>");

拆分成aa,<em>哈哈</em>,bb,<em>嘻嘻</em,cc

  string[] str2 = Regex.Split(title,"(<em>.*?</em>)");

效果如下:

    

    其实很简单就是正则里边加一个()括起来就能取到它本身了



正则表达式替换字符串



string content = "SS重庆xx";
content = Regex.Replace(content, "重庆", "<font>重庆</font>", RegexOptions.IgnoreCase);


正则表达式提取字符串


例如有一个字符串:"使用ef实现多对多关系配置"

我想使用ef作为一个关键字进行提取,提取ef的左边,ef本身,ef的右边。


我们就可以写一个正则表达式来提取:    Regex reg = new Regex("^(.*)(ef)(.*)$", RegexOptions.IgnoreCase);

正则表达式中用()将要提取的内容括起来,然后就可以通过Match的Groups属性来得到所有的提取元素,注意Groups的序号是从1开始的,0有特殊含义

string content = "使用ef实现多对多关系配置";
string query = "EF";//正则表达式可以动态的来
List<string> search = new List<string>();
Regex reg = new Regex("^(.*)(" + query + ")(.*)$", RegexOptions.IgnoreCase);

Match match = reg.Match(content);
if (match.Success)
{
    for (int i = 1; i < match.Groups.Count; i++)
    {
        search.Add(match.Groups[i].Value);
    }
}

效果如下:


正则表达式写起来很简单就是头冷








评价
断剑重铸之日,骑士归来之时
博主搜索
文章
6
评论
8
分类
16
关注
16
文章类别
最新文章
最新评价
{{item.ArticleTitle}}
{{item.BlogName}} : {{item.Content}}