[C# 문법] C# 정규표현식 - 문자열 일치 여부 확인
- C#/C# 문법
- 2021. 9. 11. 09:24
소개
- 안녕하세요. 오늘은 C# 문법에서 정규 표현식에 대해서 알려 드리려고 합니다. 그 중에서 몇가지 정규 표현식 패턴이 있는데 몇가지 기본적인 패턴에 대해서 예제 코드를 작성해 보고 해당 패턴이 무엇을 뜻하는지에 대해서 학습해 보려고 합니다.
예제코드
using System;
using System.Linq;
using System.Text.RegularExpressions;
namespace ConsoleApp7
{
static class Program
{
static void Main(string[] args)
{
var array = new[] { "12000", "-30.54", "0.435", "+234.23", "10.4.2", "3209-85754", "$123" };
var regex = new Regex(@"^[-+]?(\d+)(\.\d+)?$");
foreach (var item in array)
{
var isMatch = regex.IsMatch(item);
if(isMatch == true)
{
Console.WriteLine($"result = {item}");
}
}
}
}
}
- 위와 같이
@"[-+]?(\d+)(\.\d+)?$"
정규 표현식 패턴을 사용하였습니다. 해당 패턴이 각각 무엇을 의미하는지 설명 드리도록 하겠습니다. ^ 기호, $ 기호
: 행의 시작 지점과 끝 지점을 나타내는 ^와 $로 감쌌으므로 완전히 일치하는 것을 의미합니다.[-+]?
: 시작 지점 부호를 나타냅니다. ?는 직전의 패턴과 일치하지 않거나 한번 일치하는 것을 의미하므로-
나+
중 하나가 있거나 부호가 없는 경우에 일치합니다.(\d+)
: 정수부를 나타냅니다.\d
는 숫자 문자를 의미합니다.+
는 한 번 이상 반복하는 것을 의미합니다. 괄호는 그루핑 기호이며 이 예에서는 큰 의미는 없습니다. 괄호는 정수부임을 강조할 뿐입니다. 시작 지점이 "0" 으로 시작하는 정수부와 일치시키고 싶지 않을떄에는 "([1-9]\d*)" 라고 표현합니다. 그리고+
기호를 사용했으므로 ".001" 과 같은 실수는 인정하지 않습니다.(\.\d+)?
: 소수부를 나타냅니다.\.
은 마침표 자체를 의미합니다..
만 있으면 임의의 한 문자를 의미하므로 의미가 부적절합니다. 마지막에 있는?
는 소수부가 없는 경우에도 대응할 수 있게 하기 위한 것입니다. 소수부가 한 번도 나오지 않거나 한 번 나오는 것과 일치한다고 간주합니다.
실행 결과
result = 12000
result = -30.54
result = 0.435
result = +234.23
- 위와 같이 정규 표현식을 통해서 사용자가 원하는 값을 필터해서 출력한 것을 확인할 수 있습니다.
728x90
'C# > C# 문법' 카테고리의 다른 글
[C# 문법] C# 정규표현식 - 일치하는 모든 문자열 찾기 (0) | 2021.09.11 |
---|---|
[C# 문법] C# 정규표현식 - 첫번째 문자열 찾기 (0) | 2021.09.11 |
[C# 문법] C# 정규표현식 - 문자열 체크하기 (0) | 2021.09.10 |
[C# 문법] C# StreamReader 클래스 파일 읽기 (0) | 2021.09.05 |
[C# 문법] C# 요일 구하기 (0) | 2021.09.05 |
이 글을 공유하기