C# - 정규 표현식: 초보자 가이드
안녕하세요, 미래의 코딩 슈퍼스타! ? 정규 표현식(RegEx)의 세계로 흥미로운 여정을 떠나 준비되셨나요? 코드를 한 줄도 적어보지 않았다면 걱정하지 마세요 - 저는 이 모험을 단계별로 안내해드릴 거예요. 시작해 볼까요!
정규 표현식이란?
정규 표현식에 들어가기 전에, 정규 표현식이 무엇인지 이해해 보겠습니다. 상상해 보세요. 바다 같은 텍스트 속에서 특정 패턴을 찾는 탐정 ?️♀️. 정규 표현식은 당신의 放大鏡이 되어, 패턴을 기반으로 텍스트를 검색하고, 일치시키고, 조작할 수 있게 해줍니다. 멋지죠?
정규 표현식 정의를 위한 구조
이제 이 강력한 패턴을 만들기 위해 사용할 기본 블록을 살펴보겠습니다. 이 것들은 우리의 RegEx 세계의 LEGO 조각들입니다!
구조 | 설명 | 예시 |
---|---|---|
. | 줄 바꿈을 제외한 모든 단일 문자와 일치 | a.c는 "abc", "a1c", "a@c" 등과 일치 |
* | 전자의 문자가 0번 이상 반복되는 것과 일치 | ab*c는 "ac", "abc", "abbc", "abbbc" 등과 일치 |
+ | 전자의 문자가 1번 이상 반복되는 것과 일치 | ab+c는 "abc", "abbc", "abbbc"와 일치하지만 "ac"는 아님 |
? | 전자의 문자를 선택 사항으로 만듬 | colou?r는 "color"와 "colour" 모두와 일치 |
^ | 줄의 시작과 일치 | ^Hello는 "Hello World"와 일치하지만 "Say Hello"는 아님 |
$ | 줄의 끝과 일치 | World$는 "Hello World"와 일치하지만 "World Cup"는 아님 |
[ ] | 집합에서 단일 문자와 일치 | [aeiou]는 모든 모음과 일치 |
[^ ] | 집합에 없는 단일 문자와 일치 | [^aeiou]는 모든 자음과 일치 |
( ) | 문자를 그룹화 | (ab)+는 "ab", "abab", "ababab" 등과 일치 |
이게 당혹스러우시다면 걱정하지 마세요! 곧 이这些东西들을 실제로 사용해보겠습니다!
Regex 클래스
C#에서는 Regex
클래스를 사용하여 정규 표현식을 처리합니다. 이 클래스는 패턴 일치에 대한 우리의瑞士軍刀 ?입니다. 그것을 어떻게 사용하는지 보겠습니다!
예제 1: 간단한 패턴 찾기
먼저 간단한 것으로 시작해 보겠습니다. 이메일 주소가 유효한지 확인하는 프로그램을 만들고 있다고 상상해 보세요.
using System;
using System.Text.RegularExpressions;
class Program
{
static void Main()
{
string email = "[email protected]";
string pattern = @"@.*\.";
Regex regex = new Regex(pattern);
Match match = regex.Match(email);
if (match.Success)
{
Console.WriteLine("유효한 이메일 주소입니다!");
}
else
{
Console.WriteLine("유효하지 않은 이메일 주소입니다!");
}
}
}
이 예제에서:
- 우리는 패턴
@"@.*\."
로Regex
객체를 만듭니다. - 이 패턴은 @ 기호 뒤에 어떤 문자든(.*), 그리고 점(\.)을 찾습니다.
-
Match
메서드를 사용하여 이 패턴을 이메일 문자열에서 찾습니다. - 성공하면 이메일을 유효하다고 간주합니다.
이는 매우 간단한 확인입니다. 실제 이메일 검증은 훨씬 더 복잡합니다!
예제 2: 텍스트 변경
이제 채팅 앱을 만들고, "LOL"을 모두 "laugh out loud"로 변경하고 싶다고 상상해 보세요. RegEx를 구원하다!
using System;
using System.Text.RegularExpressions;
class Program
{
static void Main()
{
string input = "OMG! Did you see that? LOL! I can't believe it. LOL";
string pattern = @"\bLOL\b";
string replacement = "laugh out loud";
string result = Regex.Replace(input, pattern, replacement);
Console.WriteLine(result);
}
}
여기서 무엇이 일어나고 있는지 설명하자면:
- 우리는
\b
를 사용하여 단어 경계를 일치시킵니다. 이 这样使我们只替换 "LOL" 当它是完整单词时,而不是单词的一部分。 -
Regex.Replace
는 모든 일치를 찾아 변경합니다.
출력: "OMG! Did you see that? laugh out loud! I can't believe it. laugh out loud"
예제 3: 정보 추출
마지막으로, 트윗에서 모든 해시태그를 추출해 보겠습니다. 소셜 미디어 앱의 트렌딩 주제 기능을 만들 때 이를 사용할 수 있습니다.
using System;
using System.Text.RegularExpressions;
class Program
{
static void Main()
{
string tweet = "Just finished my #CSharp course! #Coding #LearningToCode";
string pattern = @"#\w+";
MatchCollection matches = Regex.Matches(tweet, pattern);
Console.WriteLine("Found hashtags:");
foreach (Match match in matches)
{
Console.WriteLine(match.Value);
}
}
}
이를 해부해 보면:
- 우리의 패턴
#\w+
는 # 뒤에 하나 이상의 단어 문자와 일치합니다. -
Regex.Matches
는 문자열에서 패턴의 모든 발생을 찾습니다. - 그런 다음, 우리는 일치를 순회하면서 각 해시태그를 인쇄합니다.
출력:
Found hashtags:
#CSharp
#Coding
#LearningToCode
결론
축하합니다! ? 당신은 C#의 정규 표현식 세계로 첫 걸음을 뗐습니다. 우리는 기본적인 것부터 간단한 패턴 일치, 텍스트 변경, 정보 추출까지 다루었습니다. RegEx는 강력한 도구지만, 초능력처럼, 이를 습득하기 위해서는 연습이 필요합니다.
처음에는 어려워 보일 수 있지만, 제가 처음 정규 표현식을 가르쳤을 때, 학생 중 한 명이 그것이 마치 고양이가 키보드를 걸어 다녔던 것처럼 보인다고 말했습니다! 하지만 연습을 통해 그는 정규 표현식 마법사가 되었습니다. 당신도 될 수 있습니다!
계속 실험하고, 다른 패턴을 시도하고, 곧 당신도 사 haystack에서 바늘을 찾는 프로가 될 것입니다. 행복한 코딩! ??
Credits: Image by storyset