C# 정규식(Regex) 패턴 매칭이란?
정규식(Regular Expression, Regex)은 입력 텍스트와 비교하여 일치 여부를 확인할 때 사용하는 패턴입니다. 하나의 패턴은 하나 이상의 문자 리터럴(literal), 연산자(operator), 또는 구문(construct)으로 구성됩니다.
이번 글에서는 C#의 System.Text.RegularExpressions 네임스페이스를 활용해, 문자열에서 'M'으로 시작하는 단어만 추출하여 출력하는 방법을 예제와 함께 살펴보겠습니다.
예제 코드
using System;
using System.Text.RegularExpressions;
namespace Demo {
class Program {
private static void showMatch(string text, string expr) {
Console.WriteLine("The Expression: " + expr);
MatchCollection mc = Regex.Matches(text, expr);
foreach (Match m in mc) {
Console.WriteLine(m);
}
}
static void Main(string[] args) {
string str = "Mandatory requirements for a Cricket Match Event!";
Console.WriteLine("Matching words that start with 'M': ");
showMatch(str, @"\bM\S*");
Console.ReadKey();
}
}
}
실행 결과
Matching words that start with 'M':
The Expression: \bM\S*
Mandatory
Match
코드 설명
먼저 아래와 같이 검색 대상이 되는 문자열을 준비합니다.
string str = "Mandatory requirements for a Cricket Match Event!";
'M'으로 시작하는 모든 단어를 찾기 위해 다음과 같은 정규식 패턴을 사용했습니다.
@"\bM\S*"
패턴을 구성하는 각 요소의 의미는 다음과 같습니다.
- \b : 단어 경계(word boundary)를 나타내며, 단어의 시작 위치에서 일치를 시작하도록 합니다.
- M : 대문자 'M'과 정확히 일치하는 문자입니다.
- \S* : 공백이 아닌 문자 0개 이상을 의미하며, 'M' 뒤에 이어지는 나머지 글자들을 모두 포함합니다.
Regex.Matches() 메서드는 입력 문자열에서 패턴과 일치하는 모든 결과를 MatchCollection 형태로 반환합니다. 이를 foreach 문으로 순회하면 위 실행 결과처럼 'Mandatory'와 'Match'라는 두 단어가 출력되는 것을 확인할 수 있습니다.