C#에서는 Regex(정규식) 클래스를 활용하면 문자열 안에 포함된 모든 숫자를 간단하게 찾아낼 수 있습니다. 텍스트 데이터에서 점수, 날짜, 코드 번호 등 숫자 정보만 골라내야 할 때 특히 유용합니다.
1. 숫자가 포함된 문자열 준비
먼저 숫자가 섞여 있는 문자열을 하나 선언합니다.
string str = "These are my marks: 90 out of 100!";
2. 숫자를 찾기 위한 정규식 패턴
문자열에서 숫자를 추출하려면 다음과 같은 정규식 패턴을 사용합니다.
@"\d+"
이 패턴의 의미는 다음과 같습니다.
- \d: 숫자 한 글자(0~9)를 나타냅니다.
- +: 바로 앞 요소가 하나 이상 연속해서 나타나는 경우를 의미합니다.
따라서 "\d+"는 한 자리 이상으로 구성된 모든 숫자 덩어리를 매칭합니다. 예를 들어 "90"은 두 자리 전체가 하나의 결과로 반환됩니다.
3. 전체 예제 코드
아래는 위 원리를 적용한 완전한 C# 프로그램입니다.
using System;
using System.Text.RegularExpressions;
namespace Demo {
class Program {
private static void showMatch(string text, string expr) {
Console.WriteLine("The Expression: " + expr);
MatchCollection mc = Regex.Matches(text, expr);
foreach (Match m in mc) {
Console.WriteLine(m);
}
}
static void Main(string[] args) {
string str = "These are my marks: 90 out of 100!";
Console.WriteLine("Getting digits from a string...");
showMatch(str, @"\d+");
Console.ReadKey();
}
}
}코드의 핵심 흐름은 다음과 같습니다.
Regex.Matches()메서드가 입력 문자열에서 정규식 패턴에 일치하는 모든 항목을MatchCollection형태로 반환합니다.foreach루프를 통해 각 매칭 결과를 하나씩 출력합니다.
4. 실행 결과
프로그램을 실행하면 다음과 같이 문자열에서 발견된 숫자들이 순서대로 출력됩니다.
Getting digits from a string... The Expression: \d+ 90 100
결과를 보면 문자열에 포함된 "90"과 "100" 두 개의 숫자가 각각 별도로 추출된 것을 확인할 수 있습니다. 이처럼 Regex와 "\d+" 패턴만 있으면 복잡한 파싱 로직 없이도 문자열에서 숫자를 쉽게 가져올 수 있습니다.