http://zvon.org/comp/r/tut-Regexp.html#Pages~Page_1 참고함
위치와 이스케이핑
^ = ^ 뒤에 있는 패턴이 시작되는 부분에 있는것 검출
^ who = who로 시작하는거 검출
$ = $뒤에있는 패턴이 끝나는 부분인거 검출
who$ = $who로 끝나는거 검출
만일 ^,$가 소스상에 있다면? : 역슬래시를 해준다. (이스케이프)
모든문자
. (점) 은 모든 문자를 의미
….. 어떠한것도 상관없이 5개의 문자를 가지고있는거
만일 . 을 찾으려면 이스케이프!
특정문자
[] 사용 (문자 하나를 해당)
[-] = range
[a-Z] = a부터 Z까지의 모든 문자 [c-ka-d2-6] = c에서 k, a에서 d, 2에서 6까지의 모든문자
[] 안에서의 ^ 은 xor, 즉 아닌 걸 의미함
패턴들
(on|use|rida) 한덩어리임
문자열 중 on,use,rida를 찾음
(Mon|Tues|Fri)day 이런식으로 씀
수량자 (Quantifiers)
어떠한 패턴이 얼마나 등장하는가
, + , ?
= * 앞의 문자가 있을수도있고 없을수도있다.
a*b = b 앞에 a 가b앞에 a가 있을수도있고, 없을수도있다
- = + 앞의 문자가 반드시 하나 이상이어야 됨
a+b = b 앞에 a 가 1개 이상
? = ?앞의 문자가 없거나 1개
a?b = b 앞에 a가 하나이거나 없다.
[ ^ ]+ 공백이 아닌것이 하나이상일#때
.{5} = . ,즉 어떠한 문자든 간에 5개가 와야됨
[els]{1,3} = e,l,s 중 하나가 1~3번 등장
[a-z]{3.} = a부터z까지의 문자가 3 이상
r.* = r 뒤에 어떤문자가 있을수도있고, 없을수도 있다
수량자 뒤에 물음표가 온다면, 0,1이라는 뜻이 아니라 그냥 0임 (가장작은수가 선택됨)
만일 뒤에 설명한 div예제같은 경우에는, 매치되는것 중 가장 적은 수임(선택 범위를 lazy)
r.*? = r 뒤에 아무것도 오지 않음
r.+ = r 뒤에 어떤 문자라도 하나이상 와야됨
r.+? = r 뒤에 문자가 하나만옴
r.? = r 뒤에 어떤 문자가 1이나 0개
r.?? = r 뒤에 암것도 오지 않음
탐욕적/게으름
≤div>.+