본문 바로가기

C Sharp

C#, 정규식 사용, Regex

반응형

참고. 특정한 패턴을 가진 문자열을 찾아내는데 유용한 테크닉.

특히 XML, HTML 파싱에 매우 편리하다.

 

라이브러리 추가.

using System.Text.RegularExpressions; 

 

 

// 정규식 사용 예제.

// HTML 소스내에서 !DOCTYPE 부분을 찾을때

string FileString = "아래의 정규식을 찾을 데이터 원본"; 

Regex pDocType = new Regex(@"[<]!DOCTYPE [\w\W]*?[>]");

Match mDocType = pDocType.Match(FileString);



// 예제2.

// 특정텍스트들 내에서 #ShortKeyword 가 들어간 부분을 찾을때

// () 나 .*? 등의 기호는 본 블로그내에 정규식 기호를 설명한 21번 게시물 참조

> http://bananamandoo.tistory.com/21


string sFileBody =  "아래의 정규식을 찾을 데이터 원본";

Regex rKeyword = new Regex(@"(#ShortKeyword)(\s)(.*?)\r\n"); //Keyword

Match mKeyword = rKeyword.Match(sFileBody, 0);


if (mKeyword.Success) sKeyword = mKeyword.Result("$3").Trim(); //$3은 위에서 정규식으로 검색한 () 세개중 세번째 항목을 리턴

else return;    //추출실패시 리턴.


// 예제3

string sFileString = "아래의 정규식을 찾을 데이터 원본";

Regex rKeyword = new Regex(@"\W/conference/");

string sNewString = rKeyword.Replace(sFileString, "\"/");


Regex rInclude = new Regex(@"<!--#include virtual=(\W+)(/.*?)(/.*?) -->");

MatchCollection arrMatch = rInclude.Matches(sNewString);


foreach (Match mVal in arrMatch)

{

Console.Write("$1:" + mVal.Result("$1") + " $2: " + mVal.Result("$2") + " $3 : " + mVal.Result("$3") + "\r\n");

sNewString = sNewString.Replace(mVal.Value, "<?php include " + mVal.Result("$1").Replace('"', '\'') + 

                                                 mVal.Result("$2").Replace('"', '\'') + mVal.Result("$3").Replace('"', '\'') + "; ?>");

}


//예제4.

string sText = "아래의 정규식을 찾을 데이터 원본";

sText = Regex.Replace(sText, @"\d(동|리)", "$1");



반응형