[C# 정규표현식] 정규 표현식 ? 물음표
- C#/정규표현식
- 2022. 1. 4. 18:51
참조
- 손에 잡히는 정규표현식
소개
- 오늘은 메타 문자 중 하나인 ?(물음표) 문자를 이용한 정규표현식에 대해서 학습해 보려고 합니다.
- 별표 처럼 물음표(?) 는 문자가 있는 경우 일치하고 문자가 없어도 일치하지만, 별표와 달리 문자나 집합이 없거나 하나만 있는 경우만 일치하며, 하나 이상은 일치하지 않습니다.
- 즉, 물음표(?) 는 문자 묶음 안에서 있는지 없는지 확실하지 않은 특정한 문자를 하나만 찾을 때 매우 유용합니다.
- 예제를 통해서 알아 보겠습니다.
예문
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
'C# > 정규표현식' 카테고리의 다른 글
[C# 정규표현식] 정규표현식 문자가 없는 경우나 하나 이상 연속하는 문자 찾기 (0) | 2021.12.05 |
---|---|
[C# 정규표현식] 정규표현식 이메일 찾기2 (0) | 2021.12.05 |
[C# 정규표현식] 정규표현식 - 이메일 주소 찾기 (0) | 2021.12.01 |
[C# 정규표현식] 영숫자 문자와 영숫자가 아닌 문자 찾기 (0) | 2021.11.23 |
[C# 정규표현식] 특정한 문자 형태와 일치시키기 (0) | 2021.11.23 |
이 글을 공유하기