[C# 문법] C# 정규표현식 - 일치한 부분 문자열 찾기

소개

  • 안녕하세요. 오늘은 C# 문법에서 정규 표현식에 대해서 알려 드리려고 합니다.
  • 그 중에서도 정규 표현식을 이용해서 일치한 부분 문자열의 일부분만 필터하는 방법에 대해서 보여 드리려고 합니다..
  • 안녕하세요. 저의 이름은 <범범조조> 입니다. 만나서 <반갑습니다.> 라는 문구가 있습니다.
  • 여기서 <> 로 묶인 "범범조조", "반갑습니다." 문자열만 정규 표현식을 이용하여 꺼내는 방법을 보여 드리도록 하겠습니다.

예제코드

using System;
using System.Text.RegularExpressions;
using System.Xml.Linq;

namespace ConsoleApp7
{
    static class Program
    {
        static void Main(string[] args)
        {
            var text = "안녕하세요. 저의 이름은 <범범조조> 입니다. 만나서 <반갑습니다.>";
            var matches = Regex.Matches(text, @"<([^<>]+)>");

            foreach (Match item in matches)
            {
                Console.WriteLine($"{item.Groups[0]}, {item.Groups[1]}");
            }
        }
    }
}
  • 위 코드에서 사용된 정규 표현식인 @"<([^<>]+)>" 표현식에 대해서 설명을 드리도록 하겠습니다.
    • @"<.+>" : 이 정규식은 최대한 긴 문자열과 일치시키려고 하기 때문에 <범범조조> 입니다. 만나서<반갑습니다.> 라는 문자열이 일치하게 됩니다. 임의 문자열을 나타내는 점(.)이 < 이나 > 과도 일치하게 되기 때문입니다.
    • @"<[^<>]+>" : < 이나 > 와 일치하지 않도록 점(.) 이 있는 부분은 <> 이외의 것을 나타내는 [^<>] 로 바꾸었습니다. 이렇게 하면 <범범조조> 라는 문자열과 일치하게 됩니다.
    • @"<([^<>]+)>" : 최종적으로 구하려는 문자열을 괄호() 로 묶어서 그룹화하면 일치한 문자열 안에서 () 안에 있는 문자열만을 꺼낼 수 있습니다.

실행 결과

<범범조조>, 범범조조
<반갑습니다.>, 반갑습니다.
  • 위와 같이 <> 안에 있는 데이터를 제대로 필터해서 가져온 것을 확인할 수 있습니다.
728x90

이 글을 공유하기

댓글

Designed by JB FACTORY