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

[Java] 정규식으로 괄호 안이나 특정 문자 사이 내용 추출, 제거 방법

 

[Java] 정규식으로 괄호 안이나 특정 문자 사이 내용 추출, 제거 방법

자바로 대괄호, 중괄호와 같은 괄호 사이에 있는 내용을 추출하거나 제거하는 방법입니다. 괄호 제거 정규식단순하게 괄호만 제거하는 방식으로 괄호 속에 있는 내용을 추출하는 방법입니다.//

priming.tistory.com