Queenut 2021. 12. 18. 21:28

* 정규 표현

 : 검색하려는 문자열을 추상적으로 표현하는 것.

 : 서로 다른 문자열을 한 가지 형식으로 표현할 수 있다.

이렇게 사용된 문자열을 패턴이라고 부른다.

 

정규표현에서 문자를 그대로 쓰면 문자 자체를 표시하지만 메타 문자를 사용할 수도 있다.

 

메타 문자

: 특수한 의미를 가진 문자

메타문자 의미
. 임의의 한 문자(줄바꿈 제외)
* 0회 이상의 반복
+ 1회 이상의 반복
? 0회 또는 1회의 반복
^ 맨 앞
$ 맨 끝
| 선택
() 정규 표현의 그룹
[] 문자 클래스
{n} n회의 반복
{n,} n회 이상의 반복
{n,m} n회 이상, m회 이하의 반복
\ 메타 문자를 문자로 취급

ex)

N.T = N  T → NOT이 될 수도, NET이 될 수도 있다.

MO* → M 혹은, MO 혹은, MOO    // O가 한 개 이상 있거나 또는 없음.

MO+ → MO 혹은, MOO    // O가 한 개 이상 있음.

 

 

 

 * 사용법

System.Text.RegularExpressions 라는 네임스페이스 안의 Regex라는 클래스를 사용한다.

1. Regex 클래스에서 패턴의 객체를 작성한다.

Regex r = new Regex("C.*의 그림책");

C.*의 그림책 : 패턴

 

2. Match() 메소드로 검색한다. 결과는 Match 클래스의 객체가 된다.

Match m = r.Match("이것은 C#의 그림책입니다.");

Match : 클래스.

이것은 C#의 그림책입니다. : 대상 문자열. 이 문자열 안에서 'C#의' 문자열이 몇 번째 인덱스부터 시작하는지 조사한다.

Match 클래스의 속성 의미
Index 검색 결과의 인덱스
Value 검색 결과의 문자열
Length 검색 결과의 문자열 길이

 

C#이 보이는 그림책 p225

 

 

 

 * Regex.Replace()

 : 패턴이 일치하고 있는 부분의 문자열을 지정한 문자열로 치환하는 메소드

Regex r = new Regex("C.*의 그림책");
string a = r.Replace("이것은 C++의 그림책입니다.", "C#의 그림책");

 

 

 * 다른 형에서 문자열로 변환

int a = 10;
string b = a.ToString();

a.ToString() : a값을 string 형으로 변환하다.

 

 

 * 문자열의 형을 다른 형으로 변환

string a = "10";
int b = int.Parse(a);
int c = b + 5;           // c = 15

int.Parse(a) : a의 값을 int형으로 변환하며 대입한다.

 

 

 

 

 * 예제 프로그램

 : 텍스트 파일에서 읽어들인 문자열을 셔플한 문자열에서 원래 문자열을 맞히는 퀴즈. 2회 틀리면 힌트를 표시한다.

 

진행에 앞서 필요한 text파일을 폴더에 넣어준다.

(해당 프로그램이 설치된 폴더)\bin\Debug\net5.0
p228~9

 

 

 

 * 가바지 컬렉션(garbage collection)

 : 사용하지 않게 된 객체를 자동으로 폐기해주는 C#언어의 편리한 기능. 전혀 참조하지 않게 된 객체는 불필요한 쓰레기로 간주하고 회수한다. C언어와 C++ 언어에는 사용하지 않는다.

 언제 실행되는지는 정확히 파악할 수 없지만 System 네임스페이스의 GC클래스의 Collect 메소드를 호출하면 강제로 실행할 수 있다.