📒 갈무리 - 정규표현식
📌 정규표현식이란?
- 특정한 규칙을 가진 문자열의 집합을 표현하는 데 사용하는 형식 언어
- 주로 프로그래밍 언어나 텍스트 편집기 등에서 문자열의 검색과 치환을 위한 용도로 사용한다.
- 입력한 문자열을 특정한 조건으로 검사해야 할 때, 일반적인 조건문으로는 복잡할 수 있지만, 정규 표현식을 이용하면 간단하게 표현할 수 있다.
- 간단한 만큼 가독성이 떨어지기 때문에 이해하기 힘들다는 문제점이 있다. 하지만 정규식을 쉽게 사용할 수 있도록 제공하는 라이브러리나 정규식 테스트 사이트, 내가 필요한 조건의 정규식을 검색하는 등 유용한 해결 방안이 있기 때문에 걱정할 필요는 없다.
chatGPT를 이용하여 정규식을 만들어 보았으나 생각보다 멍청하다...
📌 정규표현식 패턴
. : 하나의 문자를 의미
예제 : regex = A.B일 때,
ACB(1 match), A1B(1 match), AB(no match), ACCB(no match)
? : 아무 문자도 없거나 하나의 문자가 있는 것을 의미
예제 : regex = A?B일 때,
AAB(1 match), AB(1 match), AAA(no match), AAAB(1 match)
* : 0개나 하나 이상의 문자가 있는 것을 의미
예제 : regex = A*B일 때,
AB(1 match), AAAAAAAAAB(1 match), A123B(1 match), AAAAAAAA(no match)
+ : +앞에 있는 문자가 한 번 이상 반복을 의미
예제 : regex = AB+일 때,
AB(1 match), ABBBB(1 match), ABC(1 match), A(no match)
[] : [] 사이에 있는 형식이 일치하는 것을 의미하는데, 만약 [AB]라면 A 또는 B가 포함이면 true이고, [A-Z]는 A부터 Z 중 하나의 문자라도 있다면 true
예제 : regex = [A-C]일 때,
A(1 match), B(1 match), AB(2 matches), BC(2 matches), c1ㅈ(no match)
[^]: ^다음에 문자를 쓰면 해당 문자를 제외한다는 것을 의미
예제 : regex = [^A-C]일 때,
DD(2 match), AD(1 match), DDD(3 match), D(1 match)
0 : () 사이에 문자가 하나의 묶음이 되는데, 만약 (ab)+라면 abababab는 1 match
예제 : regex = (ab)일 때,
ab(1 match), ba(no match)
{} : {} 사이에 숫자를 쓰면 그 숫자만큼 패턴의 반복을 의미하는데, [A-C]{1,4}는 A, B, C를 1개에서 4개만 조합하면 된다. AAAA, A, BA, ABC, ACBA 모두 1 match, A2CBDDAADBDCDD는 5 matches
예제 : regex = [A-C]{1,3}일 때,
AA(1 match), CBC(1 match), ADA(2 matches), ACCC(2 matches), cas(no match)
^ : 문자열의 시작을 의미
@ : 문자열의 끝을 의미
📌 C#에서의 정규표현식 사용
- using System.Text.RegularExpressions을 통해서 정규식 관련 라이브러리를 불러온다.
- 정규 표현식 앞에 @를 꼭 써주어서 이스케이프 문자 기능을 동작하지 않게 하는 것이 좋다.
📌 C#에서의 정규표현식 예제
static void Main(string[] args)
{
Regex regex = new Regex(@"[A-C]{1,3}");
string test = "ADA";
if (regex.IsMatch(test))
{
Console.WriteLine("true");
return;
}
Console.WriteLine("false");
}
Output:
true