이번 포스팅은 프로젝트르 진행하면서 유용하게 사용한
정규 표현식에 대해 정리하였습니다.
| 정규 표현식 (Regular Expression)
정규 표현식은 문자열 검색 및 문자열 조작을 위해 사용하는 개념입니다.
C#에서는 System.Text.ReqularExpressions 네임스페이스를 통해
정규 표현식을 쉽게 사용할 수 있습니다.
| 기본 개념
정규 표현식은 문자열에서 특정 패턴을 정의하는 방법입니다.
가장 쉬운 예시가 이메일, 전화번호 같은 구조가 정해져 있는 형식에서
유용하게 사용할 수 있습니다.
정규 표현식에서 '메타 문자'를 사용해서 복잡한 패턴을 단순하게 표현하는데
자주 사용하는 메타 문자는 다음과 같습니다.
- . : 임의의 한 문자
- * : 0회 이상 반복
- + : 1회 이상 반복
- ? : 0회 또는 1회
- ^ : 문자열의 시작
- $ : 문자열의 끝
- [ ] : 문자 집합
- \d : 숫자 한 자리
- \w : 단어 문자(알파벳, 숫자, 언더스코어)
- \s : 공백 문자
- {n} : n회 반복
- {n, m} : n회 이상 m회 이하 반복
| 기본 사용
1. 정규 표현식 객체 생성
- Regex 클래스를 사용하여 정규표현식 객체를 생성합니다.
ex) 이메일 주소를 검증하는 정규 표현식 사용
using System.Text.RegularExpressions;
string pattern = @"^[^@\s]+@[^@\s]+\.[^@\s]+$";
Regex regex = new Regex(pattern);
우선 위 코드를 보면
@"^[^@\s]+@[^@\s]+\.[^@\s]+$" 가 무슨 뜻인지 와닿지 않습니다.
하나씩 설명과 예시를 통해 분석하면 어떻게 매칭되는지 이해하기 쉽습니다.
ex) abcd12345@tistory.com 메일 주소를 @"^[^@\s]+@[^@\s]+\.[^@\s]+$"와 매칭
- ^ : 문자열의 시작을 나타냄, 문자열이 시작부터 일치해야 함을 의미
- [^@\s]+ :
- 대괄호 [] 안의 ^는 not을 의미하며 대괄호 안의 문자가 아닌 것들을 찾음
- @와 \s는 제외하려는 문자들로, "@" 기호와 공백 문자를 의미
- + 는 하나 이상의 문자를 뜻함, 위 부분에서는 "@나 공백이 아닌 문자 하나 이상"을 뜻함 - ^[^@\s]+ : 이 부분은 이메일의 "abcd12345"와 매칭
- @ : @ 기호가 문자열 내에 반드시 하나 있어야 함을 뜻함, 이메일 주소의 필수 구분 기호
- abcd12345 뒤에 @가 이 위치에 매칭 - [^@\s]+ : @ 뒤에 오는 부분으로"@나 공백이 아닌 문자 하나 이상"을 뜻함 이메일 도메인 부분
- tistory가 이 조건에 맞게 매칭, 이 부분이 이메일 도메인 이름에 해당 - \. : 이스케이프 된 마침표 .를 의미 "점(.)"을 나타냄
- tistory 뒤의 . 가 이 위치에 매칭 - [^@\s]+ : 상위 도메인을 나타내는 부분, "@나 공백이 아닌 문자 하나 이상"과 일치, .com 같은 형식
- $ : 문자열 끝을 의미, 이 정규표현식이 문자열의 끝까지 일치해야 함을 나타냄
- [^@\s]+$ 로 com을 매칭
따라서 abcd12345@tistory.com 문자열은
정규 표현식의 각 부분에 순서대로 매칭되는 것을 확인했습니다.
2. 문자열 검증
IsMatch 메서드를 사용하여 특정 문자열이 패턴에 맞는지 검증이 가능합니다.
ex) 사용자가 입력한 이메일 주소가 유효한지 검사
string input = "example@example.com";
bool isValid = regex.IsMatch(input);
if (isValid)
{
Console.WriteLine("유효한 이메일 주소입니다.");
}
else
{
Console.WriteLine("유효하지 않은 이메일 주소입니다.");
}
3. 문자열 치환
정규표현식을 사용하여 문자열의 특정 부분을 다른 문자열로 치환할 수 있습니다.
ex) 메일 주소를 마스킹하는 경우
string replaced = regex.Replace("My email is example@example.com", "*****@*****.com");
Console.WriteLine(replaced); // 결과: My email is *****@*****.com
| 마무리
이번 포스팅은 기본 활용에 대해 설명했고
다음 포스팅은 제가 자주 사용하는 Match Result 메서드에 대해 정리하려고 합니다.
C#에서 정규표현식은 이해하면 문자열 검증 및 패턴 검색 작업을 간편하게 할 수 있습니다.
문자열을 많이 사용하는 프로젝트를 하신다면 정규표현식 한번 써보세요!
틀린 점이나 질문이 있으시면 댓글로 남겨주세요.
감사합니다 :)
'C#' 카테고리의 다른 글
C# 정규 표현식(Regular Expression) 활용 (Match, Result) (0) | 2024.10.27 |
---|---|
C# Enum 열거형에서 Name, Value 처리하는 방법 (0) | 2024.10.06 |
C# 배열을 메서드에 전달하면 안되는 이유 (1) | 2024.10.05 |
C# Modbus TCP 통신 뚫기 : NModbus 라이브러리 사용 (4) | 2024.10.03 |
C# 네트워크 통신을 위한 BitConverter 클래스 이해 (0) | 2024.03.18 |