나의 지식 보관소
정규표현식 정리 표 본문
정규표현식 정리 표
아래 표들은 자바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 |
'프로그래밍 언어 > 자바' 카테고리의 다른 글
vscode에서 src/main/java 폴더 구조 만들기 (0) | 2020.10.15 |
---|---|
동기화 메서드와 동기화 블록 (Synchronized Method, Synchronized Block) (0) | 2020.04.16 |
예외 떠넘기기 (0) | 2020.02.28 |
자동 리소스 닫기 try-with-resources (0) | 2020.02.26 |
로컬 클래스에서 외부 클래스로의 사용제한 (0) | 2020.02.20 |