Notice
Recent Posts
Recent Comments
Link
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
Tags
more
Archives
Today
Total
관리 메뉴

나의 지식 보관소

정규표현식 정리 표 본문

프로그래밍 언어/자바

정규표현식 정리 표

야식은진리다 2020. 4. 1. 23:49

정규표현식 정리 표

아래 표들은 자바API 페이지를 번역한것을 기반으로 번역하면서 개인적으로 알아본 내용을 덧붙여서 만들어졌습니다. 다소 어색하거나, 틀린 문구가 있을 수도 있으니. 오류 발견시 댓글로 알려주시면 수정하겠습니다.

 

사용설명에 관한 내용은 여기에서 볼수 있습니다. 자바에 적힌것보다 문법이 양이 적은데 아마 자바에서 추가된 문법인것 같네요(아마도).

문자

기호 설명
x 문자 x
\\ 백슬래시 문자
\0n 8진수 값을 가진 문자 0n (0 <= n <= 7)
\0nn 8진수 값을 가진 문자 0nn (0 <= n <= 7)
\0mnn 8진수 값을 가진 문자 0mnn (0 <= m <= 3, 0 <= n <= 7)
\xhh 16진수 값을 가진 문자 0xhh
\uhhhh 16진수 값을 가진 문자 0xhhhh
\x{h...h} 16진수 값을 가진 문자 0xh...h (Character.MIN_CODE_POINT  <= 0xh...h <=  Character.MAX_CODE_POINT)
\t 탭 문자
\n newline (line feed) 문자
\r carriage-return 문자
\f form-feed 문자
\a 알람 문자
\e esc 문자
\cx x와 일치하는 컨트롤 문자

 

문자 클래스

기호 설명
[abc] a또는 b또는 c
[^abc] a, b, c를 제외한 문자
[a-zA-Z] a부터 z까지, 또는 A부터 Z까지
[a-d[m-p]] a부터 d까지, 또는 m부터 p까지 : [a-dm-p]
[a-z&&[def]] d또는 e또는 f
[a-z&&[^bc]] b와 c를 제외하고 a부터 z까지 : [ad-z]
[a-z&&[^m-p] m부터 p까지를 제외하고 a부터 z까지 : [a-lq-z]

 

미리 정의된 문자 클래스

기호 설명
. 모든 문자 (줄의 끝을 나타내는 문자와 일치할수도 아닐수도 있다)
\d 한 개의 숫자: [0-9]
\D 숫자가 아닌 한 문자: [^0-9]
\h 수평 공백 문자
\H 수평 공백 문자가 아닌 문자
\s 공백 문자
\S 공백 문자가 아닌 문자
\v 수직 공백 문자
\V 수직 공백 문자가 아닌 문자
\w 영문자, 숫자, _ : [a-zA-Z_0-9]
\W 영문자, 숫자, _ 가 아닌 문자: [^\w]

 

POSIX 문자 클래스 ( US-ASCII 만 )

기호 설명
\p{Lower} 알파벳 소문자: [a-z]
\p{Upper} 알파벳 대문자: [A-Z]
\p{ASCII} 모든 아스키 문자: [\x00-\x7f]
\p{Alpha} 모든 알파벳 문자: [\p{Lower}\p{Upper}]
\p{Digit} 십진수 숫자: [0-9]
\p{Alnum} 영숫자: [\p{Alpha}\p{Digit}]
\p{Punct} 문장부호: !"#$%&'()*+,-./:;<=>?@[\]^_`{|}~ 중 하나
\p{Graph} 영문자, 숫자, 문장부호: [\p{Alnum}\p{Punct}]
\p{Print} 출력가능한 문자: [\p{Graph}\x20]
\p{Blank} 스페이스 또는 탭: [ \t]
\p{Cntrl} 제어 문자: [\x00-\x1F\x7F]
\p{XDigit} 16진수 숫자: [0-9a-fA-F]
\p[Space} 공백 문자: [ \t\n\x0B\f\r]

 

java.lang.Character 클래스

기호 설명
\p{javaLowerCase} java.lang.Character.isLowerCase() 와 동일하다
\p{javaUpperCase} java.lang.Character.isUpperCase() 와 동일하다
\p{javaWhitespace} java.lang.Character.isWhitespace() 와 동일하다
\p{javaMirrored} java.lang.Character.isMirrored() 와 동일하다

 

유니코드 스크립트, 블록, 카테고리, 바이너리 프로퍼티를 위한 클래스

기호 설명
\p{isLatin} 라틴 스크립트 문자
\p{InGreek} 그리스어 블록 안의 문자
\p{Lu} 대문자
\p{IsAlphabetic} 알파벳 문자
\p{Sc} 통화(돈) 심벌
\P{InGreek} 그리스어 블록을 제외한 문자
[\p{L}&&[^\p{Lu}]] 대문자를 제외한 문자

 

 

경계 일치자( 탐색할 위치를 지정 )

기호 설명
^ 줄의 시작에
$ 줄의 마지막에
\b 단어의 경계
\B 단어에서 단어의 경계를 제외하고 선택
\A 문자열의 시작
\G 이전 일치의 끝
\Z 문자열의 끝 문자열의 끝을 나타내는 문자가 없다면, 만약 있다면
\z 문자열의 끝

^와 \A는 꽤나 비슷해보이지만, ^는 새로운 줄의 시작마다 탐색하지만 \A는 문자열의 시작만 탐색한다.

$와 \Z도 같은 매커니즘이다.

줄바꿈 일치자

기호 설명
\R 유니코드의 아무 줄바꿈 (  \u000D\u000A|[\u000A\u000B\u000C\u000D\u0085\u2028\u2029] 와 동일함 )

 

탐욕적 수량자

기호 설명
X? X, 한번 또는 전혀 쓰지 않음
X* X, 0번 또는 더 많이
X+ X, 한번 또는 더 많이
X{n} X, 정확히 n번
X{n,} X, 적어도 n번
X{n,m} X, 적어도 n번 하지만 m번보다는 적게

 

게으른 수량자

기호 설명
X?? X, 한번 또는 전혀 쓰지 않음
X*? X, 0번 또는 더 많이
X+? X, 한번 또는 더 많이
X{n}? X, 정확히 n번
X{n,}? X, 적어도 n번
X{n,m}? X, 적어도 n번 하지만 m번보다는 적게

 

탐욕적 수량자와 게으른 수량자의 차이

탐욕적 수량자와 게으른 수량자의 차이는 탐색 방법에 있다.

탐욕적 수량자는 조건이 만족되어도 최대한 큰 범위의 결과를 내려 계속 탐색하지만,

게으른 수량자는 조건이 만족되면 바로 탐색을 중단합니다.

 

"히히"너무 졸리당"헤헤" 라는 소스가 있을때

".*" 라는 탐욕적 수량자를 사용하면 "히히"너무 졸리당"헤헤"를 찾아내지만

".*?"라는 게으른 수량자를 사용하면 "히히"만을 찾아내고 탐색을 중단합니다.

 

소유적 수량자

기호 설명
X?+ X, 한번 또는 전혀 쓰지 않음
X*+ X, 0번 또는 더 많이
X++ X, 한번 또는 더 많이
X{n}+ X, 정확히 n번
X{n,}+ X, 적어도 n번
X{n,m}+ X, 적어도 n번 하지만 m번보다는 적게

소유적 수량자는 뭐가 다른건지 모르겠습니다;

 

논리적 연산자

기호 설명
XY X를 따르는 Y
X|Y X또는 Y
(X) X, 캡쳐 그룹으로서의

 

역참조

기호 설명
\n Whatever the nth capturing group matched
\k<name> Whatever the named-capturing group "name" matched

 

Quotation

기호 설명
\ Nothing, but quotes the following character
\Q Nothing, but quotes all characters until \E
\E Nothing, but ends quoting started by \Q

 

Special constructs (named-capturing and non-capturing)

기호 설명
(?<name>X) X, as a named-capturing group
(?:X) X, as a non-capturing group
(?idmsuxU-idmsuxU)  Nothing, but turns match flags i d m s u x U on - off
(?idmsux-idmsux:X)   X, as a non-capturing group with the given flags i d m s u x on - off
(?=X) X, via zero-width positive lookahead
(?!X) X, via zero-width negative lookahead
(?<=X) X, via zero-width positive lookbehind
(?<!X) X, via zero-width negative lookbehind
(?>X) X, as an independent, non-capturing group