C# - 정규표현식) 복습을 위해 작성하는 글 2023-05-09

rizz·2023년 5월 9일
0

C

목록 보기
15/25

📒 갈무리 - 정규표현식

📌 정규표현식이란?

- 특정한 규칙을 가진 문자열의 집합을 표현하는 데 사용하는 형식 언어

- 주로 프로그래밍 언어나 텍스트 편집기 등에서 문자열의 검색과 치환을 위한 용도로 사용한다.

- 입력한 문자열을 특정한 조건으로 검사해야 할 때, 일반적인 조건문으로는 복잡할 수 있지만, 정규 표현식을 이용하면 간단하게 표현할 수 있다.

- 간단한 만큼 가독성이 떨어지기 때문에 이해하기 힘들다는 문제점이 있다. 하지만 정규식을 쉽게 사용할 수 있도록 제공하는 라이브러리나 정규식 테스트 사이트, 내가 필요한 조건의 정규식을 검색하는 등 유용한 해결 방안이 있기 때문에 걱정할 필요는 없다.

정규식 테스트 사이트 https://www.regextester.com/

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#에서의 정규표현식 예제

// C#

        static void Main(string[] args)
        {
        	// Regex 클래스를 사용.
            Regex regex = new Regex(@"[A-C]{1,3}");
            string test = "ADA";

            if (regex.IsMatch(test))
            {
                Console.WriteLine("true");
                return;
            }
            Console.WriteLine("false");
        }
        
Output:
true
profile
복습하기 위해 쓰는 글

0개의 댓글