Stack Building
R 정규표현식 만들기 본문
1. 단어로 표현하기
[] 안에 단어로 패턴을 지정할 수 있다.
[:digit:] 혹은 \d : 숫자, 0,1,2,3,4,5,6,7,8,9, 동등한 표현 [0-9].
[:lower:] : 영문 소문자, 동등한 표현 [a-z].
[:upper:] : 영문 대문자, 동등한 표현 [A-Z].
[:alpha:] : 알파벳 대소문자, 동등한 표현 [[:lower:][:upper:]] 혹은 [A-z]
[:alnum:] : 알파벳 숫자 문자, 동등한 표현 [[:alpha:][:digit:]] 혹은 [A-z0-9].
[:xdigit:] : 16진수 (밑이 16), 0 1 2 3 4 5 6 7 8 9 A B C D E F a b c d e f, 동등한 표현 [0-9A-Fa-f].
[:blank:] : 간격 문자, 즉 스페이스와 탭.
[:space:] : 공백 문자: 탭, 개행문자, 수직탭, 공백, 복귀문자, 서식이송(form feed)
[:punct:] : 구두점 문자, ! " # $ % & ’ ( ) * + , - . / : ; < = > ? @ [ ] ^ _ ` { | } ~.
[:graph:] : 그래픽 (사람이 읽을 수 있는) 문자, 동등한 표현 [[:alnum:][:punct:]].
[:print:] : 출력가능한 문자, 동등한 표현 [[:alnum:][:punct:]\\s].
[:cntrl:] : 출력되지 않는, \n, \r 같은 제어문자, 동등한 표현 [\x00-\x1F\x7F].
2. 정량자
패턴을 얼마나 반복할지 표시한다.
*: 적어도 0 번 매칭한다.
+: 적어도 1 번 매칭한다.
?: 많아아 1 번 매칭한다.
{n}: 정확히 n 번 매칭한다.
{n,}: 적어도 n 번 매칭한다.
{n,m}: n 번에서 m 번 매칭한다.
예를 들어 문자열 목록이 (wings hello run coding) 이라고 가정하면,
패턴을 "a*"라고 만들 경우 a의 존재 유무와 관계없이 모든 문자열이 전부 조건에 부합한다.
"o+"라고 만들 경우 o가 포함된 hello, coding 만이 조건에 부합한다.
"l?"라고 만들 경우에는 l이 두 번 들어간 hello는 조건에 부합하지 않는다.
즉 *는 {0,}, +는 {1,}, ?는 {0,1}와 같은 의미를 가진다.
3. 패턴의 시작과 끝
^: 문자열 시작위치를 매칭.
$: 문자열 끝위치를 매칭.
\b: 단어 양쪽 끝에 위치한 빈문자열을 매칭. 문자열 끝을 표식하는 ^$와 혼동하지 않는다.
\B: 단어 끝에 위치하지 않는 빈문자열을 매칭.
예를 들어 어떤 정규표현식이 ^(3|([7-9][1-2]+)$ 이라면
3이거나 7부터 9까지의 수로 시작하고
1또는 2가 적어도 한 번 매칭되는 방식으로 끝나는 패턴을 의미한다.
3, 81, 92 등이 해당될 수 있다.
※이 글은 출처의 게시글을 작성자의 이해를 위해 정리한 게시글입니다.
'R' 카테고리의 다른 글
블로그 게시물 제목 크롤링 (0) | 2019.03.29 |
---|---|
이미지 크롤링 (0) | 2019.03.27 |
실시간 검색어 크롤링 (0) | 2019.03.17 |
R 정규표현식 연습 (0) | 2019.03.08 |
R 정규표현식 기초 (0) | 2019.03.07 |