re 라이브러리 활용한 정규표현식①
1. 정규표현식을 사용하는 이유
: '정규 표현식'이란 특정 텍스트 안에서 지정한 문자를 찾아내는 도구를 말한다. 이 기능이 실제 프로그래밍에 많이 사용되는 이유는 새로 수집한 데이터나 기존에 다른 용도로 쓰이던 데이터를 필요한 정보 형태로 가공해내는 데 있어 활용성이 매우 높기 때문이다. 간단한 예로 우리에게 '주민등록번호 : 981029-1234567' 라는 데이터가 있을 때, 우리는 '-' 다음 놓인 숫자를 활용해 그 사람의 성별을 알아낼 수 있다. 여기서 '- 다음에 놓이는 수'의 개념을 식으로 표현하는 것이 정규표현식의 활용을 통해 가능해지는 것이다.
2. 정규표현식의 문자열 지칭 방법
: 정규 표현식은 아래와 같이 일정한 규칙을 가지고 작성됨으로 가지고 있는 데이터 양식에 따라 필요한 패턴을 직접 만들어서 사용할 수 있다. 해당 양식에 따라 작성된 패턴을 re 라이브러리의 complie 함수를 통해 패턴으로 저장하면 문자열 안에 해당 패턴의 존재 유무를 확인하고 추가적인 함수 활용을 통해 원하는 형태로 변형이 가능하다.
| 정규 표현식 | 축약 표현 | 예 시 |
| [0-9] | \d | 숫자를 찾음 |
| [^0-9] | \D | 숫자가 아닌 것을 찾음(텍스트, 특수 문자, white space(스페이스, 탭, 엔터 등등) |
| [\t\n\r\f\v] | \s | white space(스페이스, 탭, 엔터 등등) 문자인 것을 찾음 |
| [^\t\n\r\f\v] | \S | white space(스페이스, 탭, 엔터 등등) 문자가 아닌 것을 것을 찾음 |
| [A-Za-z0-9] | \w | 문자, 숫자를 찾음 |
| [^A-Za-z0-9] | \W | 문자, 숫자가 아닌 것을 찾음 |
예제 1) 정규 표현식을 활용해 문자열 내에서 숫자 위치 찾기

3. 점 (dot) 의 활용
: . (dot)은 정규 표현식 상에서 줄바꿈 문자 (\n)을 제외한 모든 문자 (한 개)를 의미한다. 만약 정말 . 을 문자열 내에서 찾고 싶다면 \n 으로 표기하거나 [.]으로 표기하면 된다.
예제 2) . (dot)이 사용된 패턴을 통해 문자열 적용 유무 확인
- . (dot) 기능을 활용해 패턴 저장하기

- 패턴이 발견되는 사례 정리① .(dot)의 수만큼 문자/ 숫자가 차지한 경우

- 패턴이 발견되는 사례 정리② 문자열 사이에 패턴이 위치한 경우

- 패턴이 발견되지 못한 사례① .(dot)의 수보다 많은 변수가 있을 경우

- 패턴이 발견되지 못한 사례② .(dot)의 수보다 적은 변수가 있을 경우

- 패턴이 발견되지 못한 사례③ 대문자 대신 소문자가 적혀 있을 경우

4. ?, *, +를 사용한 반복되는 패턴 표현
: 문자열 내에서 해당 패턴을 찾기 위해 .(dot)의 경우에는 .(dot)의 개수와 문자열(\n 제외) 개수가 정확히 일치해야 한다는 제한 사항이 있다. 이러한 제한 사항 없이 보다 활용성 높게 문자열을 지정하고자 특정 형태의 문자열을 통째로 찾아내는 ?, *, + 구문이 사용된다.
- ?는 앞 문자가 0번 또는 1번 표시되는 패턴 (없어도 되고 한번 있어도 되는 패턴)
- *은 앞 문자가 0번 또는 그 이상 반복되는 패턴
- +는 앞 문자가 1번 또는 그 이상 반복되는 패턴
예제 3) ?이 사용된 패턴을 통해 문자열 적용 유무 확인
- ? 사용 위한 컴파일 함수 사용

- ? 앞에 놓인 문자 A가 없는 경우 → 문제 없이 B 구문만 특정

- ? 앞에 놓인 문자 A가 여러개 있는 경우 → 앞에 A부분들은 포함되어 있지 않고, 마지막 AB 구문만 특정

예제 4) *이 사용된 패턴을 통해 문자열 적용 유무 확인
- * 사용 위한 컴파일 함수 사용

- * 앞에 놓인 문자 A가 없는 경우 → 문제 없이 B 구문만 특정

- * 앞에 놓인 문자 A가 여러개인 경우 → 여러개의 A가 포함된 구문 전체 특정

예제 5) +이 사용된 패턴을 통해 문자열 적용 유무 확인
- + 사용 위한 컴파일 함수 사용

- + 앞에 놓인 문자 A가 없는 경우 → +앞 문자가 한 개 이상 등장하지 않아 문자열 특정하지 못함

- + 앞에 놓인 문자 A가 여러개인 경우 → 여러개의 A가 포함된 구문 전체 특정

'python > python_basic' 카테고리의 다른 글
| [파이썬] re 라이브러리 활용한 정규표현식② (1) | 2022.12.20 |
|---|---|
| [파이썬] 리스트를 문자열로 변환하는 방법 (0) | 2022.12.14 |
| python basic_라이브러리의 개념과 사용 방법 (1) | 2022.12.10 |
| python basic_객체와 클래스 (0) | 2022.12.10 |
| python basic_리스트 외 다른 데이터 구조 (0) | 2022.12.08 |