후.. 일단 알고리즘 문제를 풀다보면 문자열 문제와 요즘 유독 많이 마주치는 것 같습니다.
그럴 때마다, 항상 아쉬운 것이 정규표현식 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
'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 |