정규표현식 기초 1 gnuParser
1. 위 이미지 처럼 패턴은 패턴구분자(pattern delimiter)와 패턴(pattern)
그리고 다시 패턴구분자로 감싸주고 경우에 따라 패턴변경자(pattern modifier) 를 두기도 합니다.
2. 패턴구분자는 여러 문자가 가능합니다.
그 중 많이 사용하는 문자는 슬래시(/)입니다만
여기 파싱기에서는 샾(#)을 패턴구분자로 사용하였습니다.
3. 패턴변경자는 i,m,g,s,x,U 등 다양한데 각 문자는 메타문자로 문자 그 자체가
아니라 각각 정규표현식에서 약속된 의미를 가지고 있습니다.
1) i 는 대소문자를 구분하지 않겠다는 의미
2) m 은 multiline 즉 개행문자(\n)를 기준으로 여러 줄로 나누어
각 줄마다 시작(^), 끝($)을 인식하게 함
3) s 는 패턴의 점 메타문자는 뉴라인(\n)을 포함하는 모든 문자를 인식함.
지정하지 않으면, 뉴라인은 제외된다.
4) x 는 패턴 내의 공백을 무시하고 패턴 내에 코맨트를 가능하게 한다.
x패턴변경자를 사용하고자 한다면 공백문자를 \s로 처리해 줘야 한다.
5) u 는 UTF8 지원 (정규식에 한글 사용 가능)
6) U 는 Ungreedy(탐욕스럽지 않은) 패턴이 되풀이 반복되는 문자열이 있을 수
있는데 최소한만을 취한다.
4. 정규표현식에 대한 더 많은 내용은 다음을 참조하세요.
참고로 PHP는 PCRE (펄perl언어 호환 정규표현식) 방식을 사용합니다.
http://navycolor.com/bbs/board.php?bo_table=parserreadme&wr_id=13
정규표현식 기초 2 gnuParser
1. 메타문자( 정규표현식에서 부여된 의미를 갖는 문자)
1) ^x : x로 시작하는 문자열
ex) $str = " hello world";
$pattern = "#^hello#";
찾고자 하는 문자열과 패턴이 위와 같다면 문자열 앞에 공백이 있으므로
패턴과 일치하는 부분이 없는 문자열이 된다.
2) x$ : 바로 앞 문자 x로 끝나는 문자열
ex) 만약 문자열이 엔터키로 줄바꿈이 있더라도 문자열 마지막을 체크한다.
그렇지 않고 줄 마다 그 끝을 체크할려면 패턴구분자로 m을 두면 된다.
3) . : 점은 임의의 한 문자를 나타낸다.
4) x+ : +는 바로 앞 문자인 x가 한개 이상 되풀이
ex) x , xx , xxx 등
5) x? : ?는 바로 앞 문자가 없거나 있는 경우
6) x* : *는 바로 앞 문자가 0개 이상 되풀이
ex) x가 없거나 x, xx, xxx 등
7) x|y : x 또는 y
8) (x) : 괄호 안을 그룹화 한다. 예를 들어 Group #1
9) (x)(y) : 각각을 그룹화하여 인덱싱화 한다. 예를 들어 Group #1, Group #2
10) (x)(?:y) : y에 해당하는 패턴을 갖는 것이 반듯이 있어야 하지만 인덱싱해서
사용하지는 않고자 할 때 괄호 안 맨 앞에 ?:을 붙인다.
11) x{n} : 바로 앞 x가 딱 n번 되풀이
ex) xyz{3} 은 xyzzz
12) x{n,} : 바로 앞 x가 n번 이상 되풀이
ex) xyz{3,} 은 xyzzz 또는 xyzzzz , xyzzzzz 등
13) x{n,m} : n번 이상 m번 이하 되풀이
ex) xyz{3,5} 는 xyzzz , xyzzzz, xyzzzzz
14) [xy] : x, y 중 하나
ex) xy[ab]z 는 xyaz 또는 xybz
15) [^xy] : x, y를 제외한 문자 하나
ex) xy[^ab]z 는 xycz , xyfz 등
16) [x-z] : x부터 z까지 문자 하나와 매칭된다.
ex) ab[x-z]c 는 abxc , abyc , abzc
17) \b : word boundary 문자와 공백 사이의 문자를 찾는다.
단어의 경계 즉 단어의 시작과 끝에서 찾는다.
ex) $str = "Hello world weal";
$pattern = "#\b(.+)\b#"; 결과값: world weal
$pattern2 = "#\b(w.+d)\b#"; 결과값: world
18) \B : 문자와 공백 사이가 아닌 문자를 찾는다.
19) \d : 숫자 하나에 해당
ex) ab\dcd 는 ab3cd , ab1cd , ab8cd 등
20) \D : 숫자 아닌 것 하나에 해당
21) \s : 공백문자 하나에 해당
22) \S : 공백문자 아닌 것 하나에 해당
23) \t : 탭문자
24) \v : vertical tab 문자
25) \w : 알파벳, 숫자, _(언더스코어)
26) \W : 알파벳, 숫자, _ 이 아닌 문자
'PHP > 그누보드5' 카테고리의 다른 글
첨부파일패턴구하기 gnuParser (0) | 2019.01.12 |
---|---|
뷰패턴구하기 gnuParser (0) | 2019.01.12 |
리스트패턴구하기 gnuParser (0) | 2019.01.12 |
그누보드5 서버이전후 캡챠 및 로그인 오류시 (0) | 2018.09.26 |
그누보드5 포인트에 따라 자동 등업 소스 (0) | 2017.09.25 |
그누보드5 iframe 입력되도록 바꾸는 방법 (0) | 2017.09.24 |