[C# 정규표현식] 여러 문자 중 하나와 일치시키기

참조

  • 손에 잡히는 정규표현식


소개

  • 안녕하세요. 오늘은 정규표현식에서 문자 집합을 어떻게 표현하고 다루는지에 대해서 알려 드리려고 합니다.
  • 앞서, 문자를 일치시키는 마침표(.) 문자에 대해서 배웠는데, 이와 달리 문자 집합을 사용하면 특정 문자들과 문자 범위를 일치 시킬 수 있습니다.
  • 그럼 예제를 통해서 어떻게 문자 집합을 사용하는지 보여 드리도록 하겠습니다.


여러 문자 중 하나와 일치시키기

  • 마침표(.) 는 어떤 문자든지 문자 하나와 일치 시킵니다.
  • 하지만 마침표(.) 를 이용하게 되면, 본인이 원하는 문자 외의 다른 문자들도 같이 검색이 되는 문제들이 있습니다.
  • 모든 문자가 아니라 특정 문자 예를들어, n이나 s와 일치하는 파일명만 찾고 싶은 때 정규표현식에서는 메타 문자인 대괄호([]) 를 사용해 문자 집합 을 표현합니다.
  • 대괄호([]) 는 문자 집합을 정의합니다.
  • 대괄호([]) 안에 있는 문자는 모두 집합의 구성원이 되며, 집합에 속한 문자 가운데 하나가 일치합니다. 집합에 속한 문자가 모두 일치할 필요는 없습니다.
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";
            string pattern = @"[ns]a.\.xls";

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

            foreach (var match in matches1)
            {
                Console.WriteLine($"{pattern} 패턴에 매칭된 데이터 {match}");
            }
        }
    }
}
  • 위의 예제코드에서 정규 표현식이 [ns] 로 시작합니다.
  • 이 패턴은 n이나 s중 한 문자와 일치하며, c나 다른 문자와는 일치하지 않습니다.
  • 대괄호([])는 집합을 의미하기 때문에 대괄호 자체는 어떤 문자와도 일치하지 않습니다.
  • 문자 a는 오직 a와 일치하고 마침표(.)는 모든 문자와 일치합니다.
  • \.는 마침표(.) 와 일치하고 xls는 문자 그대로 확장자인 xls와 일치합니다.
  • 위와 같은 패턴을 작성하게 되면 전체 3개의 문자들이 매칭되어 출력 됩니다.


실행 결과

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


대소문자 구별하지 않는 문자 집합 예제

  • 문자 집합은 흔히 대소문자를 구별하지 않고 검색하거나 검색할 부분의 특정 영역만 대소문자를 구별하지 않을 떄 사용합니다.
  • 아래 예제 코드를 통해서 보도록 하겠습니다.
using System;
using System.Text.RegularExpressions;

namespace test
{
    class Program
    {
        static void Main(string[] args)
        {
            string text = "The phrase 'regular expression' is often abbreviated as RegEx or regex."; 
            string pattern = @"[Rr]eg[Ee]x";

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

            foreach (var match in matches1)
            {
                Console.WriteLine($"{pattern} 패턴에 매칭된 데이터 {match}");
            }
        }
    }
}
  • 위와 같이 사용한 패턴에는 문자 집합이 두 개 있습니다.
  • [Rr] 은 R이나 r과 일치하고, [Ee]는 E나 e와 일치하게 됩니다.
  • 이런 식의 패턴을 이용하면 RegEx나 regex 둘 다 일치시킬 수 있습니다.
  • 그러나 REGEX 와는 일치하지 않게 됩니다.
  • 대소문자를 구별하지 않고 모든 문자를 찾아도 된다면, 위와 같이 작성하는건 의미가 없습니다.
  • 위와 같은 검색은 부분적으로 대소문자를 구별하지 않을 때만 사용합니다.


실행 결과

[Rr]eg[Ee]x 패턴에 매칭된 데이터 RegEx
[Rr]eg[Ee]x 패턴에 매칭된 데이터 regex
728x90

이 글을 공유하기

댓글

Designed by JB FACTORY