[C# 문법] C# 정규표현식 - 문자열 일치 여부 확인

소개

  • 안녕하세요. 오늘은 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

이 글을 공유하기

댓글

Designed by JB FACTORY