본문 바로가기
심심풀이 개발

C# 정규표현식

by WebHack 2011. 2. 24.
C# 정규표현식 사용해 보자.
선언부
using System.Text.RegularExpressions;

예제)
//Regex reg = new Regex(패턴);
Regex reg = new Regex(@"<(?<key>.+)>.*\r\n(?<value>.*)\r\n");

//MatchCollection matchCol = reg.Matches(검사할문장);
MatchCollection matchCol = reg.Matches(inputString);


string result = string.Empty;
for (int i = 0; i < matchCol.Count; i++)
result += string.Format("{0},{1}\r\n", matchCol[i].Groups["key"].Value, matchCol[i].Groups["value"].Value);



패턴 이해
Regex reg = new Regex(@"<(?<key>.+)>.*\r\n(?<value>.*)\r\n");
여기서 ?<key> ?<value> 이 부분은 그룹으로 묶는다는 것이다. 
결과값에서 matchCol[i].Groups["key"].Value 처럼 꺼낼 수 있다.

위 패턴은 key와 value 두개의 그룹으로 나눠 저장하고, key값은    aaa<b>aaa 에서   "< >" 사이의 값 b를 추출하여 저장한다. 

value값은 그 다음줄에 모든 값을 value에 저장한다. \r\n은 다음줄을 의미하므로 \r\n 와 \r\n 사이는 한줄을 의미하기때문이다.

즉.

tistory<name>site
wory
tistory<age>asdfasdf
27

이런식으로 되어 있다면 
matchCol 배열에
(name,wory)
(age,27)
식으로 저장되게 될것이다.

다음은 내가 많이 사용하는 문자열 추출을 위해서...보통 abc#####end 처럼..앞과 끝은 알아도 중간에 것을 몰라 추출을 하기 어려울때가 있다...이럴떤 위에 패턴을
abc(?<value>.*)end 와 같은 방법으로 추출하면 된다. ^^ ;

어디서 퍼왔긴 했는데 알수가 없네요 죄송 ㅡㅡ;

'심심풀이 개발' 카테고리의 다른 글

자동화 서버는 개체를 작성할 수 없습니다  (0) 2011.06.07
WPF에서 GIF 구현  (0) 2011.04.18
WPF Panel 공부  (0) 2011.02.18
무료 WPF 차트  (0) 2011.02.17
Mysql 한글 설정  (0) 2011.02.08