[C# 정규표현식] 문자 집합 범위 사용하기
- C#/정규표현식
- 2021. 11. 16. 18:44
참조
- 손에 잡히는 정규표현식
소개
- 안녕하세요. 오늘은 정규표현식에서 문자 집합을 어떻게 표현하고 다루는지에 대해서 알려 드리려고 합니다.
- 그중에서도, 문자 집합을 명명하여 해당 범위 안에 드는 문자들을 정규 표현식으로 어떻게 찾는지 알려 드리려고 합니다.
문자 집합 범위 사용하기
- 예를들어, 패턴이
[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
'C# > 정규표현식' 카테고리의 다른 글
[C# 정규표현식] RGB 정규표현식 (0) | 2021.11.16 |
---|---|
[C# 정규표현식] 정규표현식 제외하기 (0) | 2021.11.16 |
[C# 정규표현식] 여러 문자 중 하나와 일치시키기 (0) | 2021.11.15 |
[C# 정규표현식] 정규표현식 특수문자 찾기 (0) | 2021.11.15 |
[C# 정규표현식] 정규표현식 마침표(.) 문자 찾기 (0) | 2021.11.15 |
이 글을 공유하기