정규표현식이란?
- Stephen Cole Kleene이 만든 정규언어로부터 유래
- 특정한 규칙을 가진 문자열의 집합을 표현하는 데 사용하는 형식 언어
- 기본 제공 개념
- Boolean "Or"
- | → gray|grey 는 gray 또는 grey와 매칭 됨
- 그룹핑
- () → gray|grey 를 gr(a|e)y처럼 사용도 가능함
- 수량자
- ? → 0부터 1차례까지 발생
- * → 0번 이상의 발생
- + → 1번 이상의 발생
- {n} → 정확히 n번만큼 일치시킴
- {min,} → min번 이상만큼 일치시킴
- {min, max} → 적어도 min번만큼 일치시키고 max번을 초과하여 일치시키지는 않음
- Boolean "Or"
- 언어마다 다르지만 POSIX 표준 규칙이 적용되어 있음
- POSIX Basic Regular Expressions (BRE)
메타문자 기능 설명 . 문자 1개의 문자와 일치한다. 단일행 모드에서는 줄바꿈문자를 제외한다. [ ] 문자 클래스 "["과 "]" 사이의 문자 중 하나를 선택한다. "¦"를 여러 개 쓴 것과 같은 의미이다. 예를 들면 [abc]d는 ad, bd, cd를 뜻한다. 또한, "-" 기호와 함께 쓰면 범위를 지정할 수 있다. "[a-z]"는 a부터 z까지 중 하나, "[1-9]"는 1부터 9까지 중의 하나를 의미한다. [^ ] 부정 문자 클래스 안의 문자를 제외한 나머지를 선택한다. 예를 들면 [^abc]d는 ad, bd, cd는 포함하지 않고 ed, fd 등을 포함한다. [^a-z]는 알파벳 소문자로 시작하지 않는 모든 문자를 의미한다. ^ 처음 문자열이나 행의 처음을 의미한다. $ 끝 문자열이나 행의 끝을 의미한다. ( ) 하위식 여러 식을 하나로 묶을 수 있다. "abc¦adc"와 "a(b¦d)c"는 같은 의미를 가진다. \n 일치하는 n번째 패턴 일치하는 패턴들 중 n번째를 선택하며, 여기에서 n은 1에서 9 중 하나가 올 수 있다. * 0회 이상 0개 이상의 문자를 포함한다. "a*b"는 "b", "ab", "aab", "aaab"를 포함한다. {m, n} m회 이상 n회 이하 "a{1,3}b"는 "ab", "aab", "aaab"를 포함하지만, "b"나 "aaaab"는 포함하지 않는다. - POSIX Extended Regular Expressions (ERE)
메타문자 기능 설명 ? 0 또는 1회 "a?b"는 "b", "ab"를 포함한다. + 1회 이상 "a+b"는 "ab", "aab", "aaab"를 포함하지만 "b"는 포함하지 않는다. ¦ 선택 여러 식 중에서 하나를 선택한다. 예를 들어, "abc¦adc"는 abc와 adc 문자열을 모두 포함한다. - 문자클래스
- POSIX Basic Regular Expressions (BRE)
POSIX | vim | ASCII | 설명 |
[:alnum:] | [A-Za-z0-9] | 영숫자 | |
\w | [A-Za-z0-9_] | 영숫자 + "_" | |
\W | [^A-Za-z0-9_] | 낱말이 아닌 문자 | |
[:blank:] | [ \t] | 공백과 탭 |
- 참고로 위에서 사용하는 메타문자 자체를 찾고 싶을 때는 escape 해서 찾을 수 있음
- 연습 사이트: https://regexr.com/
참고: https://en.wikipedia.org/wiki/Regular_expression
https://ko.wikipedia.org/wiki/%EC%A0%95%EA%B7%9C_%ED%91%9C%ED%98%84%EC%8B%9D
'끝나지 않는 개발스터디' 카테고리의 다른 글
OCR을 이용해보자 (0) | 2024.04.02 |
---|---|
네트워크 장비 정리 (0) | 2024.03.21 |
파일 구조(File structure) (0) | 2024.03.02 |
암호화 알고리즘 (0) | 2024.02.29 |
압축(손실압축, 비손실 압축) (0) | 2024.02.25 |
댓글