Computer >> 컴퓨터 >  >> 프로그래밍 >> C#

C# 정규식(Regex)으로 일치하는 하위 문자열을 찾는 방법 – \b 단어 경계 완벽 정리

C#에서는 System.Text.RegularExpressions 네임스페이스의 Regex 클래스를 활용하면 정규식(Regular Expression)을 통해 문자열 안에서 원하는 하위 문자열을 간편하게 검색할 수 있습니다. 이 글에서는 특정 단어 "make"를 찾는 과정을 예제 코드와 함께 단계별로 살펴보겠습니다.

1. 대상 문자열 준비하기

먼저 검색 대상이 되는 문자열은 다음과 같습니다.

string str = " My make ";

2. 정규식 패턴 작성하기

"make"라는 하위 문자열을 찾으려면 아래와 같은 정규식 패턴을 사용합니다.

@"\bmake\b"

여기서 핵심은 \b, 즉 단어 경계(word boundary) 메타 문자입니다. 패턴 앞뒤에 \b를 붙이면 "make"가 다른 단어의 일부(예: "makemake", "remake")에 포함된 경우는 제외되고, 독립된 단어로 존재할 때만 정확히 일치하도록 만들 수 있습니다.

또한 문자열 앞에 붙인 @(verbatim 식별자)는 역슬래시(\)를 이스케이프 문자로 해석하지 않고 그대로 사용하게 해 주므로, 정규식을 작성할 때 코드의 가독성을 크게 높여 줍니다.

3. 전체 예제 코드

다음은 Regex.Matches() 메서드를 사용해 일치하는 모든 결과를 찾아 화면에 출력하는 완전한 C# 프로그램입니다.

using System;
using System.Text.RegularExpressions;

namespace RegExApplication {
   public 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("Found:" + m);
         }
      }

      public static void Main(string[] args) {
         string str = "My make";

         Console.WriteLine("Matching words start with 'm' and ends with 'e':");
         showMatch(str, @"\bmake\b");
      }
   }
}

4. 실행 결과

프로그램을 실행하면 아래와 같은 출력을 확인할 수 있습니다.

Matching words start with 'm' and ends with 'e':
The Expression: \bmake\b
Found:make

핵심 포인트 정리

  • Regex.Matches(): 입력 문자열에서 정규식과 일치하는 모든 부분을 MatchCollection 형태로 반환합니다.
  • \b: 단어의 시작 또는 끝을 의미하는 단어 경계 메타 문자로, 불필요한 부분 일치를 방지합니다.
  • @"" (verbatim 문자열): 역슬래시를 그대로 유지하므로 정규식 작성 시 실수를 줄이고 가독성을 높입니다.

이처럼 C#의 Regex 클래스와 단어 경계 패턴만 활용해도 문자열 검색 작업을 정확하고 효율적으로 처리할 수 있습니다.