[C# 정규표현식] 문자 집합 범위 사용하기

참조

  • 손에 잡히는 정규표현식


소개

  • 안녕하세요. 오늘은 정규표현식에서 문자 집합을 어떻게 표현하고 다루는지에 대해서 알려 드리려고 합니다.
  • 그중에서도, 문자 집합을 명명하여 해당 범위 안에 드는 문자들을 정규 표현식으로 어떻게 찾는지 알려 드리려고 합니다.


문자 집합 범위 사용하기

  • 예를들어, 패턴이 [ns]a.\.xls 라고 가정을 합니다.
  • 그리고 내가 찾고자 하는 녀석은 na 혹은 sa 로 제일 처음 시작하는 문자들을 찾고 싶었다고 가정합니다.
  • 하지만, [ns]a.\.xls 패턴을 사용하게 되면, asam.xls 파일 명과도 일치하는 문제가 발생합니다.
  • 이러한 문제를 문자 집합을 사용해 해결할 수 있습니다.
using System;
using System.Text.RegularExpressions;

namespace test
{
    class Program
    {
        static void Main(string[] args)
        {
            string text = "sales1.xls, order3.xls, sales2.xls, sales3.xls, apac1.xls, europe2.xls, na1.xls, na2.xls, sa1.xls, sam.xls";
            string pattern = @"[ns]a[0-9]\.xls";

            var matches1 = Regex.Matches(text, pattern);

            foreach (var match in matches1)
            {
                Console.WriteLine($"{pattern} 패턴에 매칭된 데이터 {match}");
            }
        }
    }
}
  • 위와 같이 패턴을 작성하게 되면 첫 글자가 n이나 s와 일치하고, 두 번째 글자는 a, 세번째 글자는 숫자[0-9] 에 속한 숫자와 일치하게 됩니다.
  • 이렇게 하게 되면 sam.xls 는 일치하지 않게 됩니다.
  • 이처럼 문자 집합을 이용해 잘못된 패턴을 올바르게 사용할 수 있습니다.


실행 결과

[ns]a[0-9]\.xls 패턴에 매칭된 데이터 na1.xls
[ns]a[0-9]\.xls 패턴에 매칭된 데이터 na2.xls
[ns]a[0-9]\.xls 패턴에 매칭된 데이터 sa1.xls


문자 집합 종류

  • 문자 집합의 종류는 아래와 같은 것들이 있습니다.
  • A-Z는 A부터 Z 사이에 있는 모든 대문자와 일치합니다.
  • a-z는 a부터 z 사이에 있는 모든 소문자와 일치합니다.
  • A-F는 A부터 F 사이에 있는 대문자와 일치합니다.
  • A-z는 아스키문자 A와 아스키문자 z 사이에 있는 모든 문자와 일치합니다.

Tip : 범위를 지정할 때는 두 값 중 더 큰 값이 앞에 나오면 안됩니다. 예를 들어 [3-1] 처럼 사용하면 안됩니다. 이렇게 하면 동작하지 않습니다. 또한, 패턴 자체가 동작하지 않을 수도 있기 때문에 주의해서 사용하시길 바랍니다.


  • 범위 여러 개를 집합 하나에 합칠 수도 있습니다.
  • 예를 들어 다음 패턴은 대소문자를 포함해서 모든 영숫자 문자와 일치하며, 숫자와 문자가 아닌 경우는 일치하지 않습니다.
[A-Za-z0-9]


728x90

이 글을 공유하기

댓글

Designed by JB FACTORY