정규식이란
정규식은 텍스트 검색과 조작을 위한 도구이다. 검색에서 특수한 패턴을 사용하는데 패턴은 하나 이상의 문자 리터럴, 연산자 또는 구문으로 구성된다.
- 리터럴 문자 - 패턴에서 자신을 나타내는 문자.
- ex) 'a'로 선언하면 문자열에서 문자 'a'를 찾는다.
- 메타 문자 - 특별한 의미를 가지는 문자이다.
- ' . ' 임의의 단일 문자를 나타낸다.
- '^' 문자열의 시작을 나타낸다.
- '$' 문자열의 끝을 나타낸다.
- 문자 클래스 : [] 기호를 사용하여 문자를 넣어, 그 중 하나와 매치되는 패턴을 생성한다.
- [abc] => 'a', 'b', 'c'와 매치된다.
- [a-z] => 소문자 알파벳들 중 하나와 매치된다.
- 수량자 : 패턴의 반복을 나타낸다.
- '*' - 0 회 이상 반복 => 'a*' 는 a가 0회 이상 반복되는 문자열과 매치.
- '+' - 1회 이상 반복 => 'a+' 는 a가 1회 이상 반복되는 문자열과 매치.
- '?' - 0회 또는 1회 => 'a?' a가 0또는 1회 등장하는 문자열과 매치.
- '{n}' - 정확히 n회 반복 => 'a{3}' 은 a가 3회 등장하는 문자열과 매치.
- '{n,}' - n회 이상 반복 => 'a{2,}' 는 a가 2회 이상 등장하는 문자열과 매치.
- '{n,m}' - n회 이상 m회 이하 반복 => 'a{2,5}'는 a가 2회 이상 5회 이하 등장하는 문자열과 매치
- 그릅화와 캡처 : 소괄호() 를 사용하여 부분 패턴을 그룹화하고 매치된 부분을 캡처할 수 있다.
- (abc) - abc 문자열과 매치
- (\b+) 하나 이상의 숫와 매치되고, 찾은 숫자를 캡처한다.
- OR 연산자 : | 파이프를 사용하여 OR 연산을 수행한다.
- a | b - a 또는 b와 매치.
예시 코드 C# 버전
string pattern = @"^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$";
Regex regex = new Regex(pattern);
bool isValidEmail = regex.IsMatch("example@example.com");
/ 하위 문자열 변경
using System;
using System.Text.RegularExpressions;
public class Example
{
public static void Main()
{
string pattern = "(Mr\\.? |Mrs\\.? |Miss |Ms\\.? )";
string[] names = { "Mr. Henry Hunt", "Ms. Sara Samuels",
"Abraham Adams", "Ms. Nicole Norris" };
foreach (string name in names)
Console.WriteLine(Regex.Replace(name, pattern, String.Empty));
}
}
// The example displays the following output:
// Henry Hunt
// Sara Samuels
// Abraham Adams
// Nicole Norris
/ 중복된 단어 식별하기
using System;
using System.Text.RegularExpressions;
public class Class1
{
public static void Main()
{
string pattern = @"\b(\w+?)\s\1\b";
string input = "This this is a nice day. What about this? This tastes good. I saw a a dog.";
foreach (Match match in Regex.Matches(input, pattern, RegexOptions.IgnoreCase))
Console.WriteLine("{0} (duplicates '{1}') at position {2}",
match.Value, match.Groups[1].Value, match.Index);
}
}
// The example displays the following output:
// This this (duplicates 'This') at position 0
// a a (duplicates 'a') at position 66
참고
https://learn.microsoft.com/ko-kr/dotnet/standard/base-types/regular-expressions
.NET 정규식 - .NET
.NET에서 정규식을 사용하여 특정 문자 패턴을 찾고, 텍스트의 유효성을 검사하고, 텍스트 부분 문자열로 작업하고, 추출된 문자열을 컬렉션에 추가합니다.
learn.microsoft.com
'자료구조' 카테고리의 다른 글
해시코드, 해시테이블 (0) | 2024.05.25 |
---|