본문
; -------------------- 정규표현식 -------------------------
^ : 행의 첫 문자([] 안에서는 not의 의미)
. : 아무 문자나 한 문자 의미
[] : []사이의 문자 중 하나
* : 앞의 내용이 0번 이상 반복됨
\< : 단어의 시작
\n : 새 행 문자
$ : 행의 끝
\| : or의 의미
\+ : 앞의 내용이 1번 이상 반복됨
\> : 단어의 끝
\t : 탭 문자
\{min,max\} : min이상 max이하 반복됨
[a-z]\+
: a부터 z까지의 한 글자가 한번 이상 반복되는 것(소문자로 이루어진 단어)
[a-z]\+[0-9]\+ 또는 [a-z]\+[0123456789]\+
: 소문자가 앞에오고, 뒤에 숫자가 있는단어 'like0101', 'korea117'
OK\ [a-z]\+[0-9]*
: "OK "(OK와 공백)가 앞에오고 a부터 z중 한글자가 한번 이상 반복되고 0부터 9사이 문자가 0번이상 반복되는 단어.
^[0-9]\+.*
: 행의 첫문자가 0~9까지중의 숫자가 한번이상 있고, \n을 제외한 아무글자가 0번이상 반복되는 단어.
^[^0-9]\+.*
: 위와 같지만 행의 첫문자가 0~9가 아니란 의미이다.([]안에 있는 ^는 not의 의미)
.*[0-9]$
: \n을 제외한 문자가 0번이상 반복되고 끝이 숫자로 끝나는 문자열.
\<KO
: 단어의 첫글자가 "KO"로 시작하는 단어.
KO\>
: 단어의 끝자라가 "KO"로 끝나는 단어.
[A-z]\+[0-9]\{3,4\}
: 영문자로 시작하고, 3자리에서 4자리 숫자로 끝나는 문자열.(끝은 숫자인데, 숫자가 3~4개는 되어야 한다는 의미)
\(K\|k\)orea
: Korea 혹은 korea.(첫글자 k가 소문자 혹은 대문자란 의미)
; ----------------- POSIX 문자 클래스 ---------------------
[:alnum:] : 알파벳과 숫자 [A-Za-z0-9]
[:alpha:] : 알파벳 [A-Za-z]
[:cntrl:] : 제어 문자
[:blank:] : 탭과 공백 문자
[:digit:] : 숫자 [0-9]
[:graph:] : 제어 문자와 공백 문자를 제외한 문자
[:lower:] : 소문자 [a-z]
[:upper:] : 대문자 [A-Z]
[:print:] : 제어 문자를 제외한 문자. 즉 프린터 할 수 있는 문자
[:punct:] : [:graph:] 문자 중 [:alnum:]을 제외한 문자. ex_ !, @, #, $, %, ^...
[:space:] : 화이트 스페이스 ex_ 공백, 탭, 캐리지 리턴, 새 행, 수직 탭, 폼 필드
[:xdigit:] : 16진수
1. Vim에서 POSIX 문자 클래스를 사용할 때는 대괄호를 두개 사용해야 한다.
2. 정규 표현식은 셸 명령어인 grep에서도 사용할 수 있다.
[[:lower]]\+
: 소문자로 이루어진 문자열
정규표현식 - int \(\ \|\t|\n)\+var; , POSIX 클래스 - int[[:space:]]\+var;
: "int var;" 표현식
int[[:space:]]\+myfunc[[:space:]]*(.*)[[:space:]]*{
: int + 공백이 한번이상반복 + myfunc + 공백이 0번이상반복 + ( + 어떤문자던지 0번이상 반복 + ) + 공백이 0번이상 반복 + {
: int myfunc(void) 이라는 함수를 찾을때.
: grep 에서 사용 예)
- grep "int[[:space:]]\+myfunc[[:space:]]*(.*)[[:space:]]*{" ./ -Rlz
; ------------- 정규표현식(Vim 확장 정규표현식) ----------------
\i(소문자 아이) : 변수 지정에 사용되는 문자들 [_0-9A-Za-z]
\I(대문자 아이) : \i와 같지만 숫자는 제외
\k : keyword로 사용되는 문자 [_\.\-0-9A-Za-z>]
\K : \k와 같지만 숫자는 제외
\f : 파일 이름으로 사용하는 문자
\F : \f와 같지만 숫자는 제외
\p : 프린트 가능한 문자
\P : \p와 같지만 숫자는 제외
\s : whitespace character (공백과 Tab)
\S : non-whitespace character
\d : 숫자 [0-9]
\D : 숫자가 아닌 문자[^0-9]
\x : 16진수 숫자 [0-9A-Fa-f]
\X : 16진수 숫자가 아닌 문자 [^0-9A-Fa-f]
\o : 8진수 숫자 [0-7]
\O : 8진수 숫자가 아닌 문자 [^0-7]
\w : 영문 단어에서 사용되는 문자 [0-9A-Za-z]
\W : 영문 단어에서 사용되지 않는 문자 [^0-9A-Za-z]
\h : 영문 단어의 시작에 사용되는 문자 [A-Za-z]
\H : 영문 단어의 시작에 사용되지 않는 문자 [^A-Za-z]
\a : 모든 알파벳 [A-Za-z]
\A : 알파벳이 아닌 문자 [^A-Za-z]
\l(소문자 엘) : 소문자 [a-z]
\L(대문자 엘) : 소문자가 아닌 문자 [^a-z]
\u : 대문자 [A-Z]
\U : 대문자가 아닌 문자 [^A-Z]
\e : Esc
\t : Tab
\r : CR
\b : Back Space
\n : LF
1. 대문자로 이루어진 단어
정규표현식 : \<[A-Z]\+\>
POSIX 문자클래식 : \<[[:upper:]]\+\>
Vim 확장 정규 표현식 : \<\u\+\>
2. "int myfunc(void) {"를 찾을때
POSIX 문자클래식 : int[[:space:]]\+myfunc[[:space:]]*(.*)[[:space:]]*{
Vim 확장 정규 표현식 : int\s\+myfunc\s*(.*)\s*{
관련링크
댓글목록
등록된 댓글이 없습니다.