[C# 정규표현식] 정규 표현식 ? 물음표

참조

  • 손에 잡히는 정규표현식

소개

  • 오늘은 메타 문자 중 하나인 ?(물음표) 문자를 이용한 정규표현식에 대해서 학습해 보려고 합니다.
  • 별표 처럼 물음표(?) 는 문자가 있는 경우 일치하고 문자가 없어도 일치하지만, 별표와 달리 문자나 집합이 없거나 하나만 있는 경우만 일치하며, 하나 이상은 일치하지 않습니다.
  • 즉, 물음표(?) 는 문자 묶음 안에서 있는지 없는지 확실하지 않은 특정한 문자를 하나만 찾을 때 매우 유용합니다.
  • 예제를 통해서 알아 보겠습니다.

예문

The URL is http://www.forta.com/, to connect
securely use https://www.forta.com/ instead.

예제 코드

using System;
using System.IO;
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 = @"http://[\w./]+";

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

            foreach (var match in matches)
            {
                Console.WriteLine($"{pattern} 패턴에 매칭된 데이터 {match}");
            }
        }
    }
}
  • 위와 같이 http://[\w./]+ 라고 패턴을 입력하게 되면 http:// 을 썼기 때문에 문자 그대로 찾기 때문에 해당 문자와만 일치합니다.
  • 이어서 [\w./]+ 가 영숫자 문자, 마침표(.), 슬래시(/) 로 이루어진 집합의 구성 요소 가운데 하나 이상과 일치 하게 됩니다.
  • 그렇게 되면 첫 번째 URL인 http://www.forta.com/ 은 일치하지만, 두 번째 URL인 https://www.forta.com/ 은 일치하지 않게 됩니다.

실행 결과

http://[\w./]+ 패턴에 매칭된 데이터 http://www.forta.com/

물음표를 이용한 정규 표현식

  • 앞서 첫 번째 URL은 일치하였지만, 두 번째 URL은 일치하지 않았습니다.
  • 물음표 정규 표현식을 이용하게 되면 두 번째 URL도 같이 일치하게 만들 수 있습니다.
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 = @"https?://[\w./]+";

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

            foreach (var match in matches)
            {
                Console.WriteLine($"{pattern} 패턴에 매칭된 데이터 {match}");
            }
        }
    }
}
  • 위와 같이 https?://[\w./]+ 라고 정규 표현식을 작성하였습니다.
  • 이 패턴은 https?:// 로 시작 하기 때문에, 물음표(?) 는 자기 앞에 있는 문자가 없거나 그 문자가 하나만 있는 경우 일치하게 됩니다.
  • 여기서는 s인데, https?:// 는 http:// 혹은 https:// 와 일치하게 되고 그 외에는 일치 하지 않게 됩니다.(httpt://, httpp:// etc..)

실행 결과

  • 실행 결과 URL 모두 일치되어 표시되는 것을 확인할 수 있습니다.
https?://[\w./]+ 패턴에 매칭된 데이터 http://www.forta.com/
https?://[\w./]+ 패턴에 매칭된 데이터 https://www.forta.com/
728x90

이 글을 공유하기

댓글

Designed by JB FACTORY