Regex 문자열 패턴 찾기
string str = "서울시 강남구 역삼동 강남아파트";
Regex regex = new Regex("강남");
Match m = regex.Match(str);
if (m.Success)
{
Debug.WriteLine("{0}:{1}", m.Index, m.Value);
}
Regex regex = new Regex("강남");
Match m = regex.Match(str);
while (m.Success)
{
Debug.WriteLine("{0}:{1}", m.Index, m.Value);
m = m.NextMatch();
}
Regex regex = new Regex("강남");
MatchCollection mc = regex.Matches(str);
foreach (Match m in mc)
{
Debug.WriteLine("{0}:{1}", m.Index, m.Value);
}
1.
Regex 객체의 Match() 메서드를 사용하여 특정 패턴이 입력 문자열에 존재하는지 체크.
Regex.Match() 메서드는 매치된 정보를 갖는 Match 클래스 객체 리턴.
매치된 문자열이 존재하면 Match.Success 속성이 True가 되고, Match.Index 속성을 통해 문자 패턴 위치를 알 수 있다.
2.
복수개의 매칭 문자열이 존재할 수 있으므로, Ex2에서 처럼 계속 루프를 돌며 NextMatch()를 호출 모든 매칭 데이타를 찾아낼 수 있다.
3.
Regex.Matches() 메서드를 통해 모든 매칭 문자열들을 한꺼번에 MatchCollection 객체로 리턴하는 예를 보여주고 있다.
MatchCollection mc = Regex.Matches(str, @"^강\w*구$");
메타문자 의미
------------------------
^ 라인의 처음
$ 라인의 마지막
\w 문자(영숫자) [a-zA-Z_0-9]
\s Whitespace (공백,뉴라인,탭..)
\d 숫자
* Zero 혹은 그 이상
+ 하나 이상
? Zero 혹은 하나
. Newline을 제외한 한 문자
[ ] 가능한 문자들
[^ ] 가능하지 않은 문자들
[ - ] 가능 문자 범위
{n,m} 최소 n개, 최대 m개
( ) 그룹
| 논리 OR
한 라인에서 강으로 시작해서 구로 끝나는 문자열들을 찾는 예제
string str = "서울시 강남구 역삼동 강남아파트";
Regex regex = new Regex(" ");
string[] vals = regex.Split(str);
foreach (string s in vals)
{
Debug.WriteLine(s);
}
Regex 클래스 Split() 메서드는 특정 패턴의 문자열을 기준으로 입력문자열을 분리하는데 사용된다.
공백(blank)을 기준으로 입력주소를 분리(split)하여 문자배열을 담아 리턴하는 예제
참고주소
https://msdn.microsoft.com/ko-kr/library/hs600312.aspx
https://msdn.microsoft.com/ko-kr/library/az24scfc(v=vs.110).aspx
https://msdn.microsoft.com/ko-kr/library/kweb790z(v=vs.110).aspx