Vim - 정규표현식 [출처] Vim - 정규표현식|작성자 atlacpi

|

================================================================================================ 정규표현식 =======================================================================================================================

^     : 행의 첫 문자([] 안에서는 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*{

 

[출처] Vim - 정규표현식|작성자 atlacpi


And