본문 바로가기

Development/C#

C# Reverse String Format Using Regex

Introduction

이번시간에는 정규표현식을 이용해 String Format이 적용된 텍스트에서 값을 추출하는 방법에 대해 소개합니다. 아래는 이번시간에 구현하게될 내용의 스크린캡쳐 화면 입니다.

About StringFormat

.Net에서 StringFormat은 입력된 텍스트를 일정한 형식(Format)에 맞춰 텍스트를 변환해주는것을 의미하며 String.Format이나 Console.WriteLine등에서 사용합니다. Composite formatting이라고도 부르는 StringFormat은 일반적으로 "고정문자열"과 "서식"으로 이루어지는데  아래 코드를 보면, 고정 텍스트는 "Name = " 과 ", "Hours = "입니다.

그리고 서식은 {}(중괄호)로 묶여 있는 {0}과 {1:hh}부분입니다.

서식 부분은 "{index[,alignment][:formatString]}"와 같이 구성되는데 중괄호와 index만 필수 항목이고 alignment속성이나 formatString부분은 옵션입니다. String Format과 관련된 자세한 내용은 MSDN에서 확인 하실 수 있습니다. (http://msdn.microsoft.com/ko-kr/library/txafckwd.aspx)

Reverse String Format Using Regex

다시 본론으로 돌아와서 StringFormat이 적용된 텍스트에서 원래 값을 추출하기 위해서는 위에서 언급한 StringFormat에 사용된 서식부분을 추출하는게 우선 인데요. 아래 코드와 같이 정규표현식 "\{(.*?)\}"를 StringFormat으로부터 서식 부분을 찾고 이부분에 어떤 텍스트라도 찾을 수 있 수 있도록 "(.*?)"로 변환 합니다.

 
이렇게 생성한 정규표현식을 StringFormat이 적용된 텍스트에 적용하면 입력 텍스트만 추출 할 수 있습니다. 아래는 이번시간의 전체 소스코드입니다.

이상이며 이외 궁금하신점이나 문의사항은 댓글이나 이메일로 주시면 답변드리도록 하겠습니다.