언어/자바

자바 특수 문자, 정규식 처리

토킹포테토 2022. 10. 24. 11:55
728x90

<특수문자 입출력>

입력 출력
\ ERROR
\\ \
\' '
\" "
( (
\( ERROR
/ /
\/ ERROR
\\| |

* 괄호나 일반 슬래시(/) 는 백슬래시(\)를 붙이지 않아도 된다.

 

*split 사용 시 | 를 사용하는데, 이때  \\| 로 잘라야한다.  

ex> String splitTest = "홍길동|22|서울";

        String[] info = splitTest.split("\\|");

 

입력 출력
\n 줄바꿈
\r 줄의 맨 처음으로
\t
\b 커서를 한 문자 앞으로
\0 빈 칸

 

< 정규식 (Regular Expression) >

: 특정한 규칙을 가진 문자열의 집 합을 표현하는데 사용되는 언어.

 

1. pattern 클래스

String patternTest = "^[0-9]*$"; //숫자 검증 정규식
string str = "123456789";

Boolean result = Pattern.matches(patternTest, str); // matches() : 주어진 문자열에 매칭되는 값이 있는지 확인

System.out.println(result); // true

주요 메소드

Static Pattern complie(String regex) 주어진 정규식을 갖는 패턴을 생성
String pattern() 컴파일된 정규 표현식을 반환
Matcher matcher(charSequence input) 패턴에 매칭할 문자열을 입혁해 Matcher를 생성
static boolean matches(STring regex, CharSequence input) 정규식과 문자열이 일치하는지 확인
String[] split(CharSequence input)
String[] split(CharSequence input, int limit)
패턴이 일치하는 항목을 중심으로 input을 분할

limit -1의 횟수만큼 패턴 일치를 시켜 문자열을 자름 
(문자열이 limit개 생성)
0일때, 최대한 많이 적용

* split(CharSequence input, intt limit) 예시

import java.util.regex.*;

public class regexTest {
   public static void main(String[] args){
	string regex = "ee";
    
    String  actualString = " aaaeebbbeeccceeddd";
    
    Pattern pattern = Pattern.compile(regex);
    
    int limit = 0;
    
    String[] array = pattern.split(actualString , limit);
    
    for( int i=0; i<array.length; i+=){
    Ststem.out.println("array["+ i + "]=" + array[i]);
    
    /* output
     array[0] = aaa
     array[1] = bbb
     array[2] = ccc
     array[3] = ddd
    */
   	}
   }
}

2. Matcher 클래스

 주요 메소드

Pattern pattern() matcher가 해석한 패턴을 반환
Matcher usePattern(Pattern newPattern) matcher가 사용할 pattern을 변경
Matcher reset(CharSequence input) matcher가 분석할 문자열 변경
int start() 매칭하는 문자열의 시작 인덱스 반환
int end() 치하는 문자열의 마지막 문자열 이후 인덱스 반환
boolean matches() 패턴에 전체 문자열이 일치한 경우 true 반환
boolean find() 패턴 일치하는 다음 문자열을 찾음, 다음 문자열이 있다면 true
boolean find(int start) star인덱스 이후부터 패턴에 일치하는 문장열 찾음
String replaceAll(String replacement) 패턴과 일치하는 모든 문자열을 지정된 replacement로 변경

 

3. 정규표현식 문법

^ 문자열의 시작
$ 문자열의 끝
. 임의의 한 문자
* 문자가 0번 이상 발생
+ 문자가 1번 이상 발생
? 문자가 0 번 or 1번 발생
[] 문자의 집합 범위를 나타냄
[0-9] : 숫자(0~9까지)
[a-z] : 알파벳(a-z까지)

[^abc]일 경우 = a,b,c, 제외
{} 횟수 또는 범위를 의미
() 소괄호 안의 문자를 하나의 문자로 인식
| or 조건
\ 확장 문자의 시작
\b 단어의 경계
\B 단어가 아닌 것 경계
\A 입력의 시작부분
\G 이전 매치의 끝
\Z 입력의 끝이지만 종결자가 있는 경우
\z 입력의 끝
\s 공백문자
\S 공백문자가 아닌 나머지 문자
\w 알파벳이나 숫자
\W 알파벳이나 숫자를 제외한 문자
\d [0-9]와 동일
\D 숫자를 제외한 모든 문자

 

4. 자주 사용하는 정규식

^[0-9]*$ 숫자
^[a-xA-Z]*$ 영문자
^[가-힇]*$ 한글
\\w+@\\w+\\.\\w+(\\.\\\w+)? 이메일
^\d{2,3}-\d{3,4}-\d{4}$ 전화번호
^01(?:0|1|[6-9])-(?:\d{3}|\d{4})-\d{4}$ 핸드폰번호
\d{6}\-[1-4]\d{6} 주민등록번호
^\d{3}-\d{2}$ 우편번호

'언어 > 자바' 카테고리의 다른 글

[JAVA IO]FileInputStream & FileOutputStream  (0) 2023.03.09
쿠키(Cookie)와 세션(Session)  (0) 2022.11.22
AES256 암호화, 복호화  (0) 2022.10.25
JSON 이란?  (0) 2022.10.24
API 연동(1)_ 토큰발급  (0) 2022.10.21