
정규식 (Regex)
정규식이란 텍스트 데이터 중에서 원하는 조건과 일치하는 문자열을 찾아내기 위해 사용된다.
정규식을 이용하면 원하는 데이터를 뽑아내거나 입력된 데이터를 검증할 수도 있다.
비밀번호 설정시 특수문자를 체크한다거나, 아이디를 영어+숫자 조합만 가능하게 설정하는 등 다양하게 활용이 가능하다.
정규 표현식 (Regular expression)
정규 표현식 | 역할 |
^ | 문자열 시작 |
$ | 문자열 종료 |
. | 임의의 문자 [단 ‘'는 넣을 수 없습니다.] |
* | 앞 문자가 0개 이상의 개수가 존재할 수 있습니다. |
+ | 앞 문자가 1개 이상의 개수가 존재할 수 있습니다. |
? | 앞 문자가 없거나 하나 있을 수 있습니다. |
[] | 문자의 집합이나 범위를 표현합니다. -기호를 통해 범위를 나타낼 수 있습니다. ^가 존재하면 not을 나타냅니다. |
{} | 횟수 또는 범위를 나타냅니다. |
() | 괄호안의 문자를 하나의 문자로 인식합니다. |
| | 패턴을 OR 연산을 수행할 때 사용합니다. |
\s | 공백 문자 |
\S | 공백 문자가 아닌 나머지 문자 |
\w | 알파벳이나 문자 |
\W | 알파벳이나 숫자를 제외한 문자 |
\d | [0-9] 숫자 |
\D | 숫자를 제외한 모든 문자 |
(?i) | 대소문자를 구분하지 않습니다. |
matches() 메서드 (정규표현식 패턴 검사)
해당 메서드와 정규식을 사용하여 문자열 비교 작업을 수행할 수 있다.
자주 쓰이는 것!!
^[0-9]*$ // 숫자 ^[a-zA-Z]*$ // 영문 ^[가-힣]*$ // 한글
문자열변수.matches("정규식");
// 정규식에서 지정한 숫자,영문,한글 등만 있으면 true 다른 문자도 있으면 false
정규식도 자주 쓰인다면 String 변수에 넣어놓고 사용해도 된다.
String str = "12345"; String pattern = "^[0-9]*$"; System.out.println(str.matches(pattern));
Pattern.matches();로도 사용 가능!
String str = "12345"; String pattern = "^[0-9]*$"; System.out.println(str.matches(pattern)); System.out.println(Pattern.matches(pattern, str));
package jokun.KH.test0629;
public class regex {
public static void main(String[] args) {
String str = "123";
String str1 = "abc";
String str2 = "가나다";
String str3 = "123abc가나다";
System.out.println(str.matches("^[0-9]*$") );
System.out.println(str1.matches("^[a-zA-Z]*$") );
System.out.println(str2.matches("^[가-힣]*$") );
System.out.println(str3.matches("^[가-힣]*$") );
}
}
String 배열에 사용 시
원하는 문자를 뽑아내는 데 사용할 수 있다.
package jokun.KH.test0629;
public class regex {
public static void main(String[] args) {
//영문, 숫자, 한글이 담긴 배열 준비
String[] array = {"a", "b", "c", "1", "2", "3", "가", "나", "다"};
//나눠서 넣어줄 StringBuilder 생성
StringBuilder str1 = new StringBuilder();
StringBuilder str2 = new StringBuilder();
StringBuilder str3 = new StringBuilder();
for (String s : array){
if (s.matches("^[0-9]*$")){ //들어온 배열이 숫자일 때
str1.append(s); //str1에 숫자 저장
} else if (s.matches("^[a-zA-Z]*$")) { //들어온 배열이 영문일 때
str2.append(s); //str2에 영문 저장
} else if(s.matches("^[가-힣]*$")){ //들어온 배열이 한글일 때
str3.append(s); //str3에 한글 저장
}
}
System.out.println("str1 : " + str1);
System.out.println("str2 : " + str2);
System.out.println("str3 : " + str3);
}
}
문자를 이어 붙이고 싶을 때는 .toString() 사용!
'Backend > JAVA' 카테고리의 다른 글
[JAVA] 특강 10일차 : 넌센스 퀴즈 뷰어 & TO DO LIST 만들기 (0) | 2022.07.03 |
---|---|
[JAVA] 특강 9일차 : 자바 문제풀이 & 코드리뷰 (0) | 2022.07.03 |
[JAVA] 특강 8일차 : 자바 문제풀이 & 코드리뷰 (0) | 2022.06.29 |
[JAVA] 특강 7일차 : 자바 문제풀이 & 코드리뷰 (0) | 2022.06.29 |
[JAVA] 특강 6일차 : 자바 문제풀이 & 코드리뷰 (0) | 2022.06.27 |