Spring

JAVA 정규식 이용하여 문자열 Filtering하기

Hasky96 2022. 4. 12. 22:57

String문자열을 replaceAll을 이용하여 변경하는 방식으로 진행하였습니다.

// filtering 하려고 하는 문자열
Stirng str = "";

// replaceAll을 이용하여 filtering 하기
String result = str.replaceAll(regex, replacement);

 

regex = filtering 하는 기준(String)

replacement = 바꿀 문자열

 

regex

대괄호( [ ] ) 안의 해당하는 한개의 문자를 의미합니다.

ex) [abc] => a혹은 b혹은 c인 하나의 문자

ex) [^def] => d와 e와 f를 제외한 하나의 문자 =>[ ] 내부의 ^ 는 제외를 의미한다.

ex) [a-zA-Z0-9] => 0~9, a~z, A~Z 중 하나의 문자

? , *, +, { } 는 문자의 수를 의미합니다.

기호 개수
? 없거나 1개 
* 없거나 1개 이상
+ 1개 이상
{n} 정확히 n개
{n,} n개 이상
{n, m} n개에서 m개까지

ex) [a-z]* => a~z의 문자가 없거나 1개이상

 

다른 기호들

기호 의미 ex
^ 문자열의 시작 ^[a-z]
$ 문자열의 종료 [a-z]$
. 임의의 한 문자  
() 소괄호 안의 문자를 하나의 문자로 인식  
| or 연산 ^[a]|[a]$
\s 공백  
\S 공백 아닌 나머지 문자  
\w 알파벳이나 숫자, "_"언더바 언더바를 제외하고 싶으면 \w_
\W 알파벳이나 숫자, "_" 언더바
를 제외한 문자
 
\d 숫자 == [0-9]  
\D 숫자를 제외한 모든 문자  

 

*TIP

1. java 는 \를 인식하지 못합니다. \S 같은 기호를 사용하려면 \\S로 사용해야 합니다.

 

2. 한글은? => [가-힣] == 모든 한글

 

3. Email? => "\\w + @\\w+\.\w+(\\.\\w+)?"

ex) asdfasd@test.com  => (\\.\\w+)?  => ?는 없다를 의미!

ex) asdfqwef@test.co.kr => (\\.\\w+)?  => ?는 1개를 의미!