[C# 정규표현식] 여러 문자 중 하나와 일치시키기
- C#/정규표현식
- 2021. 11. 15. 07:00
참조
- 손에 잡히는 정규표현식
소개
- 안녕하세요. 오늘은 정규표현식에서 문자 집합을 어떻게 표현하고 다루는지에 대해서 알려 드리려고 합니다.
- 앞서, 문자를 일치시키는 마침표(.) 문자에 대해서 배웠는데, 이와 달리 문자 집합을 사용하면 특정 문자들과 문자 범위를 일치 시킬 수 있습니다.
- 그럼 예제를 통해서 어떻게 문자 집합을 사용하는지 보여 드리도록 하겠습니다.
여러 문자 중 하나와 일치시키기
- 마침표(.) 는 어떤 문자든지 문자 하나와 일치 시킵니다.
- 하지만 마침표(.) 를 이용하게 되면, 본인이 원하는 문자 외의 다른 문자들도 같이 검색이 되는 문제들이 있습니다.
- 모든 문자가 아니라 특정 문자 예를들어, 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
'C# > 정규표현식' 카테고리의 다른 글
[C# 정규표현식] RGB 정규표현식 (0) | 2021.11.16 |
---|---|
[C# 정규표현식] 정규표현식 제외하기 (0) | 2021.11.16 |
[C# 정규표현식] 문자 집합 범위 사용하기 (0) | 2021.11.16 |
[C# 정규표현식] 정규표현식 특수문자 찾기 (0) | 2021.11.15 |
[C# 정규표현식] 정규표현식 마침표(.) 문자 찾기 (0) | 2021.11.15 |
이 글을 공유하기