내가하는 데이터베이스 쿼리의 결과를 가지고 결과 단지 DataBlob 멤버 그것은 아주 잘 보일 수 있습니다정규식 GET 그룹, n은
를 설정 한 같은 :
<IK/12322>1354654 16/MAY/2014 18:01:01 - 20:01:01
그래서, 나는 다른 회원을 채우기 위해 필요하고, '각'대표로 그렇게하고 싶습니다 :
results.Each(f => f.FirstID = int.Parse(Regex.Match(f.DataBlob, @"\d+").Value));
results.Each(f => f.SecondNum = int.Parse(Regex.Match(f.DataBlob, @"\d+").Value));
results.Each(f => f.ThirdDate = DateTime.Parse(Regex.Match(f.DataBlob, @"\d+").Value));
results.Each(f => f.FourthTime = Regex.Match(f.DataBlob, @"\d+").Value));
results.Each(f => f.FifthTime = Regex.Match(f.DataBlob, @"\d+").Value));
글쎄, 당신이 상상할 수있는, 정규식 표현이 첫 번째 정수에 일했다.
하지만 잠깐! Regex를 사용하여 필요한 모든 그룹을 찾을 수 있습니다.
(\d+)\>(\d+) (\d+\/[a-zA-Z]+\/\d+) (\d+\:\d+\:\d+) - (\d+\:\d+\:\d+)
이렇게하면 필요한 모든 항목이 성공적으로 그룹화됩니다.
그러나 여기에 SecondNum의 두 번째 정규식 그룹 항목, ThirdDate의 세 번째 정규식 그룹 항목, FourthTime의 네 번째 정규식 그룹 항목 및 FifthTime의 다섯 번째 정규식 그룹 항목은 어떻게됩니까?
내가
(\d+)\>(\d+) (\d+\/[a-zA-Z]+\/\d+) (\d+\:\d+\:\d+) - (\d+\:\d+\:\d+){0}
을하려고 할 때 내가 처음 (영차) 항목을하지 않습니다.
그룹스에서 첫 번째 등 항목을 가져 오려면 어떻게해야합니까? 당신이 할 수 있도록
results.Each(f => f.SecondNum = int.Parse(Regex.Match(f.DataBlob, @"????").Value));
목록에서 사용할 수 없습니다. Obj.Each. 그 질문에 언급되었습니다. –
사실, 당신의 답은 내가 얼마나 효율적이지 않은지 생각하게했습니다 ... 이제는 모든 항목의 루프에서 하나의 정규식을 수행합니다 ... 그러나 나는 결과를 호출 할 수 있습니다. 각 (f => f.SecondNum = int .Parse (Regex.Match (f.DataBlob, pattern) .Groups [2] .Value))); –
저는 사용하는 언어에 익숙하지 않습니다. 난 당신이 캡처 한 있지만 캡처 그룹을 전혀 사용하지 않았기 때문에 일반 정규식 사용량 측면에서 설명했다. –