有一个字符串 要提取彩色部分的内容
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
做测试的时候有了换行符,导致贪婪匹配没重现出来,取消贪婪匹配后可以了