언어/자바
자바 특수 문자, 정규식 처리
토킹포테토
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}$ | 우편번호 |