일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 백준
- 힙정렬자바
- 자료구조 트리
- 카카오코테
- 객체프로그래밍이란
- 카카오기출
- 프렌즈4블록
- java
- heap정렬
- 카카오1차
- heap
- 프로그래머스
- 백준 1000번 java
- 코딩테스트기출
- 객체프로그래밍
- 공부정리
- Java heap
- 알고리즘
- 자료구조힙
- 프렌즈4블록java
- 문자열포맷
- 백준 1924번 java
- 개발상식
- 백준 1000번
- 코테준비
- 백준 1924번
- 자바
- java method
- 카카오코딩테스트
- 자바문자열
- Today
- Total
일단 시작해보는 블로그
[Java] 정규표현식, Regular Expression 본문
정규표현식은 특정한 조건으로 문자를 검색하거나 바꿀 때 사용된다.
정규 표현식의 예
예를들어 다음과 같은 문자열이 있다고 보면,
String str = "안녕하세요. 저는 12345567입니다."; //너무 대충썼..
이 문자열에서 숫자만 남기고 다 지우고 싶을 때 다음과 같은 식을 쓰면 된다.
String result = str.replaceAll("[^0-9]", "");
여기서 [^0-9]가 정규표현식인데,
[] -> 하나의 문자를 의미한다고 보면 편한데, [0-9]라면 0-9숫자, [a-z]는 소문자, [A-Z]는 대문자, [a-zA-Z]는 대소문자 중, 하나 이렇게 생각하면 된다.
0-9 -> 위에서 설명했듯, 범위이다.
^ -> 위의 표현식[^0-9]은 괄호 안에 ^ 표시가 있는데, 이는 반대를 의미한다. 따라서 0-9이외의 것을 의미한다고 보면 된다.
정규 표현식 정리
()
패턴들을 하나의 그룹으로 묶음
+
기호 앞의 패턴이 1번 이상 발생하는 패턴, 꼭 나타나야함.
ex) ^\S+ 라면 (공백없는 텍스트로 시작하고, 한글자 이상의 길이)
?
기호 앞의 패턴이 없거나 1번 발생하는 패턴 -> 0번 or 1번
*
기호 앞의 패턴이 없거나 1번 이상 발생하는 패턴 -> 0번 or 1번 이상 가능
.
모든 문자를 가리킴(\과 개행은 제외)
^
문자열(패턴)이나 행의 처음을 의미
$
문자열 (패턴)이나 행의 종료를 알린다.
[]
[] 사이에 들어간 문자 중 하나를 매치
[0-9a-zA-Z] -> 0-9, 소문자, 대문자 중 하나를 매치함을 의미한다.
[^ ]
[]의 부정을 의미
\s
공백문자
\S
공백을 제외한 나머지 문자들 (공백 없는 텍스트 일 때 사용하게 된다.)
\w
"_"를 포함한, 영어와 숫자들
\W
"_"를 제외한, 영어와 숫자가 아닌 문자열들과 일치
\d
숫자를 일치시킨다.
[0-9]와 동일
\D
숫자가 아닌 모든 문자
{N}
정확히 N번 발생
{M,N}
최소 M번 이상, 최대 N번 이하로 발생하는 패턴
|
or연산을 의미한다. 예를 들어, (txt, doc)는 txt 또는 doc을 의미한다.
{N|M} -> N번 혹은 M번 발생
(?!)
대소문자를 구분하지 않음.
정규 표현식 예제
이메일 형식 체크, 파일 확장자 확인
1. 이메일 형식 체크
xxxx@xxxx.xxx
String regex = "^[0-9a-zA-Z]+@[0-9a-zA-Z]+(\\.[_0-9a-zA-Z-]+)*$";
-> 여기서 특수문자인 '.'은 \.이렇게 표현하지만 한번 더 감싸준다. \\.
2. 전화번호
010 혹은 02로 시작하는 번호
(02|010)-(02|010)-[\d]{3,4}-[\d]{4}
테스트 해보고 싶다면
정규표현식을 쉽게 테스트해볼 수 있는 사이트를 추천합니다.
[REFERENCE]
https://developer88.tistory.com/89
'개발 > Java' 카테고리의 다른 글
[Java] HashSet (0) | 2019.09.03 |
---|---|
[Java] 자바의 정규표현식을 위한 Pattern, Matcher (0) | 2019.09.03 |
[Java] 데이터 타입 (0) | 2019.08.23 |
[Java] ArrayList, 참조값 복사와 값 복사 clone() (0) | 2019.08.22 |
[Java] indexOf(int ch), substring() (0) | 2019.08.22 |