본문 바로가기

JAVA

정규표현식 JAVA 공식 문서로 혼내주자!😡

후.. 일단 알고리즘 문제를 풀다보면 문자열 문제와 요즘 유독 많이 마주치는 것 같습니다.

그럴 때마다, 항상 아쉬운 것이 정규표현식 Skill이 완벽하지 않은 나 자신을 마주할 때인 것 같아요.

 

그래서 계속해서 이 글을 업데이트 해나가면서 정규표현식에 대한 것들을 정리할 예정입니다.

( 기본적인 것들은 다 알고 있다는 가정 하에 정리하려 합니다! 참고 부탁드려용:) 

 

정규표현식 설명
\\ \ 을 나타내는 것임.
\t tab을 나타내는 것임.
\n 개행 newline
[abc] a,b 또는 c
[^abc] a,b,c를 제외한 문자
[a-zA-Z] a~z, A~Z
[a-z&&[def]] d,e 또는 f
. 아무 문자
\d digit = [0-9]
\D non-digit = [^0-9]
\s A whitespace character = [ \t\n\x0B\f\r ]
\w A word character = [a-zA-Z_0-9]
\W A non-word character = [^\w]
   
^ 한 줄의 시작
$ 한 줄의 끝
\b 단어의 경계, A word boundary
\B A non-word boundary
   
X? X가 한번 또는 0번
X* X가 0번 혹은 여러 번
X{n} X가 정확히 n번
X{n, } X가 적어도 n번
X{n,m} X가 적어도 n번 하지만, m번보다는 크지 않게 ( n<= X <= m )
   
X?? X가 한번 또는 0번
X*? X가 0번 또는 여러 번
X+? X가 한 번 이상
X{n} X가 정확히 n번
X{n, } X가 적어도 n번
X{n,m} X가 적어도 n번 하지만, m번보다는 크지 않게 ( n<= X <= m )
   
X|Y X 또는 Y
( X ) X가 하나의 그룹이 된다. 괄호 안의 문자를 하나로 인식하게 된다.
{ }  매칭되는 횟수 또는 범위
[ ] 매칭하고자하는 문자의 집합이나 범위
   
( ? : X ) X를 non-capturing group으로
   

 

 

Greedy Quantifiers Vs Reluctant Quantifiers

X* 과 X*? 이 둘의 차이는 무엇일까요

바로 읽는 순서의 차이입니다.

 

X?의 경우에는 뒤에서부터 탐색을 진행합니다.

예를 들어 , aabcaaaaabc 가 있을 때,

 

 

.*abc의 경우  aabcaaaaabc 를 찾게 됩니다.

하지만, .*?abc의 경우 앞에서부터 aabc를 찾게 되고, aaaaabc를 다음으로 찾게 됩니다.

 

^\\S+.

 

 

 

docs.oracle.com/javase/7/docs/api/java/util/regex/Pattern.html

 

Pattern (Java Platform SE 7 )

Enables canonical equivalence. When this flag is specified then two characters will be considered to match if, and only if, their full canonical decompositions match. The expression "a\u030A", for example, will match the string "\u00E5" when this flag is s

docs.oracle.com

 

'JAVA' 카테고리의 다른 글

JAVA Stream 사용법  (0) 2021.05.23
JAVA Exception  (0) 2021.05.16
String vs StringBuffer vs StringBuilder ( JAVA )  (0) 2021.04.27
Comparable, Comparator 어떻게 쓰지? JAVA  (0) 2021.04.23