当前位置: 代码迷 >> C# >> c# 正则表达式 有关问题
  详细解决方案

c# 正则表达式 有关问题

热度:100   发布时间:2016-05-05 04:50:28.0
c# 正则表达式 问题
本帖最后由 eastwolf 于 2015-02-05 21:00:25 编辑
有一个字符串 要提取彩色部分的内容

string s=”34sdf2sdfg234rA85C4E414D455B34D23WSE26DFGH565DE3808CD4YHDFG345T34535E3808Dsdffgjgo56h4563s2342X5C4E414D455B123SF323423425DE3808C234WEDFSDSD223423424FE3808D5w54rterfgsfgxvbe46tyugbnh5e6rufn395C4E414D455BHUP678RFGH4E55DE3808CS43GDTG34FDGE3808Drghde456ydfghfgdh”;



从中可以看出
彩色的规律就是:xx5C4E414D455B????????????5DE3808C????????????????????????E3808D

xx是固定的2位字符串但不固定内容+固定位数内容的5C4E414D455B+不固定的位数的和内容+固定位数内容的5DE3808C+不固定的位数的和内容+固定的E3808D


我是想把彩色部分用C#代码把这些要求的字符替换掉
------解决思路----------------------
这个正则表达式还是挺复杂的, 有个前提, 如果不固定位数匹配数量可能只有一个,下面的代码假设可变位数的范围是 1 到 40, 楼主应根据具体情况调整.
string s = "34sdf2sdfg234rA85C4E414D455B34D23WSE26DFGH565DE3808CD4YHDFG345T34535E3808Dsdffgjgo56h4563s2342X5C4E414D455B123SF323423425DE3808C234WEDFSDSD223423424FE3808D5w54rterfgsfgxvbe46tyugbnh5e6rufn395C4E414D455BHUP678RFGH4E55DE3808CS43GDTG34FDGE3808Drghde456ydfghfgdh";
Regex reg = new Regex(@"(..)5C4E414D455B(.{1,40})5DE3808C(.{1,40})E3808D");
var ms = reg.Matches(s);
foreach(Match m in ms)
{
    if (m.Success)
    {
        Debug.WriteLine(m.Groups[1].Value);
        Debug.WriteLine(m.Groups[2].Value);
        Debug.WriteLine(m.Groups[3].Value);
    }
}

------解决思路----------------------
\w{2}5C4E414D455B\w+?5DE3808C\w+?E3808D

做测试的时候有了换行符,导致贪婪匹配没重现出来,取消贪婪匹配后可以了

引用:
\w{2}5C4E414D455B\w+5DE3808C\w+E3808D