[C# 정규표현식] 정규표현식 문자가 없는 경우나 하나 이상 연속하는 문자 찾기

참조

  • 손에 잡히는 정규표현식


소개

  • 안녕하세요. 오늘은 정규표현식에서 문자가 없는 경우나 하나 이상의 연속하는 문자를 찾는 방법에 대해서 학습해 보려고 합니다.
  • 더하기(+)는 하나 이상 연속된 문자를 찾습니다.
  • 문자가 없는 경우는 아예 찾지 못하고 최소한 하나는 일치해야 합니다.
  • 하지만 있을 수도 있고, 없을 수도 있는데 그럴떄는 메타 문자인 별표(*)를 사용하면 됩니다.
  • 별표(*)는 더하기(+)와 거의 비슷하게 사용하는데, 문자나 집합 바로 뒤에 두면 찾고자 하는 문자나 집합이 없는 경우 또는 하나 이상 연속하는 경우에 일치합니다.
  • 예를 들어 B.*Forta 패턴은 B Forta, B. Forta, Ben Forta 같은 조합과도 일치합니다.
  • 예제 코드를 통해서 살펴보겠습니다.


예제 문

Hi, .Ben@forta.com is my email address.

예제 코드

using System;
using System.Text.RegularExpressions;

namespace interfaceTest
{
    class Program
    {
        static void Main(string[] args)
        {
            string path = @"C:\Users\Desktop\RegexTest.txt"; 
            string textValue = System.IO.File.ReadAllText(path); 
            string pattern = @"\w+[\w.]*@[\w.]+\.\w+"; 

            var matches = Regex.Matches(textValue.ToString(), pattern); 

            foreach (var match in matches)
            { 
                Console.WriteLine($"{pattern} 패턴에 매칭된 데이터 {match}");
            }
        }
    }
}
  • \w+는 마침표(.)를 제외한 영숫마 모두와 모두 일치합니다.
  • 우선 첫 문자가 유효하면, 그 다음에는 마침표(.)가 하나 나오거나 문자가 더 나올 수도 있습니다.
  • 사실 이런 이메일 주소는 없을 수도 있습니다.
  • [\w.]* 는 문자가 없는 경우를 포함해 여러 개의 영숫자 혹은 마침표(.)와 일치합니다.


실행 결과

\w+[\w.]*@[\w.]+\.\w+ 패턴에 매칭된 데이터 Ben@forta.com
  • 정규표현식을 [\w.]+@[\w.]+\.\w+ 이렇게 사용을 했다면 .Ben@forta.com 이 검색됩니다.
  • 하지만 \w+[\w.]*@[\w.]+\.\w+ 이렇게 정규표현식을 사용하면 Ben@forta.com 이 검색됩니다.
728x90

이 글을 공유하기

댓글

Designed by JB FACTORY