Study/java

[Java] 정규식으로 특수 문자 포함 여부 체크 및 제거하는 방법

 

자바로 정규식을 사용해서 문자열에 특수문자가 포함되어있는지 여부와 정규식을 사용하여 문자열에 포함된 특수문자를 제거하는 방법을 설명드리겠습니다.

 

정규식 특수문자 포함 여부 체크 방법

특수문자가 정해져 있는 경우

!@#$%^&*같은 특수문자가 포함되어있는지 여부를 체크하려면 대괄호([]) 속에 체크하고자 하는 특수문자를 넣으면 됩니다.

그리고 Pattern 클래스와 Matcher 클래스를 사용해서 문자열이 지정한 정규식과 일치하는지 여부를 확인할 수 있습니다.

 

문자열에 특정 특수문자(!@#$%^&*)가 포함되어 있는지 여부를 체크하는 코드입니다.

import java.util.regex.Matcher;
import java.util.regex.Pattern;

...

String str = "특수문자가 포함되어 있는 문자열!";
String regex = "[!@#$%^&*]"; // !@#$%^&*이 포함되어있는지 체크하는 정규식

Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(str);
if (matcher.find()) {
    System.out.println("`" + str + "`에는 특수문자가 포함되어 있습니다.");
} else {
    System.out.println("`" + str + "`에는 특수문자가 없습니다.");
}

 

문자열에 특정 특수문자(!@#$%^&*)가 포함되어 있는지 여부를 체크하는 코드입니다.

이런 방법으로 특수문자 포함 여부를 체크할 수 있지만, 다른 방법도 있습니다.

 

 

 

 

특수문자가 정해져 있지 않은 경우

특수문자의 수는 엄청 많기때문에 모든 특수문자를 정규식에 포함하기는 힘듭니다.

그래서 다음과 같은 방법을 사용해서 특수문자를 판별할 수 있습니다.

// 알파벳, 숫자, 한글을 제외한 모든 문자
String regex = "[^a-zA-Z0-9가-힣ㄱ-ㅎㅏ-ㅣ]";

이 정규식은 알파벳, 숫자, 한글을 제외한 문자가 있는지 체크하는 정규식입니다.

이 정규식을 통과한다면 특수문자가 포함되어있다고 판단합니다.

 

다음과 같이 사용할 수 있습니다.

String str = "특수문자가포함되어있는문자열";
String regex = "[^a-zA-Z0-9가-힣ㄱ-ㅎㅏ-ㅣ]";

Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(str);
if (matcher.find()) {
    System.out.println("`" + str + "`에는 특수문자가 포함되어 있습니다.");
} else {
    System.out.println("`" + str + "`에는 특수문자가 없습니다.");
}

 

만약 공백은 특수문자로 간주하고 싶지 않다면 \\s를 추가하면 됩니다.

 // 공백은 특수문자로 간주하지 않음
 String regex = "[^a-zA-Z0-9가-힣ㄱ-ㅎㅏ-ㅣ\\s]";

 

 

정규식으로 특수문자 제거

정규식을 사용해서 문자열에 포함된 특수문자를 제거하는 방법을 설명드리겠습니다.

String 클래스의 replaceAll 메소드를 사용하면 됩니다.

String str = "특~수!문@자#가 $포%함^되&어*있(는) 문{자}열;";
String regex = "[^a-zA-Z0-9가-힣ㄱ-ㅎㅏ-ㅣ\\s]"; // 알파벳, 숫자, 한글, 공백을 제외한 모든 문자

// 특수문자 제거
String replaceStr = str.replaceAll(regex, "");
System.out.println("replaceStr = " + replaceStr);

replaceAll로 특수문자 제거 결과
replaceAll로 특수문자 제거 결과

알파벳, 숫자, 한글을 제외한 문자가 모두 제거된 것을 확인할 수 있습니다.

 

 

읽으면 좋은 글

[Java] String - matches : 정규식 일치 여부 판별하기

 

[Java] String - matches : 정규식 일치 여부

matches 메소드는 문자열이 정규 표현식과 일치하는지 여부를 판별합니다.주로 텍스트 검색, 데이터 추출과 같은 다양한 상황에서 사용됩니다.matches메소드는 정규식을 사용하기때문에 정규식을

priming.tistory.com

[Java] String - replace, replaceAll : 다른 문자열로 대체하기

 

[Java] String - replace, replaceAll : 다른 문자열로 대체

replace와 replaceAll은 문자열의 일부를 다른 문자열로 대체해주는 메소드입니다. replace(char oldChar, char newChar)문자열에서 특정 문자를 찾아서 새로운 문자열로 바꿔주는 메소드입니다. String s = "abc

priming.tistory.com