比如有
007 TTTTTT 9983 0641 85JUL /6
1.陈号(001) 2.陈瑞(001) 3.孙海(001) 4.田松(001)
5.张涛红(001) TTTTT
001 10.SSR FOID GS HK1 NI522225198218842019/P4
HK(001)
001 11.SSR FOID GS HK1 NI522221196745042478/P1 +
001 12.SSR FOID GS HK1 NI527421196212300018/P5 -
HK(001)
001 13.SSR FOID GS HK1 NI522224197174230058/P2
HK(001)
001 14.SSR FOID GS HK1 NI522289196410290034/P3
HK(001) 我要如何获取姓名及姓名相应的身份证,这里面陈号的身份证在“NI522221196745042478/P1”这一栏,身份证/P2是第二个姓名,其他以此推。
c#正侧表达式截取字符串.netwinform
007 TTTTTT 9983 0641 85JUL /6
1.陈号(001) 2.陈瑞(001) 3.孙海(001) 4.田松(001)
5.张涛红(001) TTTTT
001 10.SSR FOID GS HK1 NI522225198218842019/P4
HK(001)
001 11.SSR FOID GS HK1 NI522221196745042478/P1 +
001 12.SSR FOID GS HK1 NI527421196212300018/P5 -
HK(001)
001 13.SSR FOID GS HK1 NI522224197174230058/P2
HK(001)
001 14.SSR FOID GS HK1 NI522289196410290034/P3
HK(001) 我要如何获取姓名及姓名相应的身份证,这里面陈号的身份证在“NI522221196745042478/P1”这一栏,身份证/P2是第二个姓名,其他以此推。
c#正侧表达式截取字符串.netwinform
{
string str=@"007 TTTTTT 9983 0641 85JUL /6
1.陈号(001) 2.陈瑞(001) 3.孙海(001) 4.田松(001)
5.张涛红(001) TTTTT
001 10.SSR FOID GS HK1 NI522225198218842019/P4
HK(001)
001 11.SSR FOID GS HK1 NI522221196745042478/P1 +
001 12.SSR FOID GS HK1 NI527421196212300018/P5 -
HK(001)
001 13.SSR FOID GS HK1 NI522224197174230058/P2
HK(001)
001 14.SSR FOID GS HK1 NI522289196410290034/P3
HK(001) ";
Regex reg=new Regex(@"(?is)((?<id>\d+)\.(?<name>\w+)\(\d+\)\s+)+.*?(NI(?<card>\d{18}|\d{17}X)/P(?<p>\d+)((?!NI).)*)+");
Regex regName=new Regex(@"(?<=(\d+)\.)\w+(?=\()");
foreach(Match m in reg.Matches(str))
{
string id="P";
foreach(Capture c in m.Groups[1].Captures)
{
Match m1=regName.Match(c.Value);
Console.Write(m1.Value);
id=m1.Groups[1].Value;
foreach(Capture c2 in m.Groups[2].Captures)
{
Regex regCard=new Regex(@"(?<=NI)((?<card>\d{18}|\d{17}X))(?=/P"+id+")");
Console.Write(" "+regCard.Match(c2.Value).Value);
}
Console.WriteLine();
}
}
/*
陈号 522221196745042478
陈瑞 522224197174230058
孙海 522289196410290034
田松 522225198218842019
张涛红 527421196212300018
*/
}