반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
Tags
- 혼공얄코
- SQL Mapper
- 입출력
- 캡슐화
- @modelattibute
- spring security
- 자바의 정석
- 프로그래머스
- java
- 객체지향
- mvc 구성요소
- mvc 동작
- hackerrank
- 자바의정석
- over()
- spring security 설정
- sec태그
- 쿠키
- 오버라이딩
- spring security 로그인정보 가져오기
- 오버로딩
- 티스토리챌린지
- 로그인정보 가져오기
- 오블완
- CPU
- charset 변경
- 멀티프로세싱
- 다형성
- 멀티태스킹
- 리눅스
Archives
- Today
- Total
쉽게 쉽게
[Java] 정규표현식(regex) 정리 본문
반응형
▤ 목차
1. 정규표현식(Regular Expression)
1. 정규표현식이란?
정규표현식(Regular Expression)이란 문자열 데이터 중에서 원하는 조건(패턴)과 일치하는 문자열 부분을 찾아내기 위해 사용하는 것으로, 미리 정의된 기호와 문자를 이용해서 작성한 문자열을 말한다.
자바에서는 replaceAll(), split() 메서드, Pattern 클래스의 matches() 메서드를 사용하여 문자열 검증 및 치환할 수 있다.
(ex. 전화번호, 주민등록번호, 이메일 등 형식체크, 특수문자 치환 및 제거)
2. 정규식 기호 사용법
1. 정규식 일반 기호
기호 | 의미 | 예시 |
^ | 문자열 시작을 의미 대괄호([ ]) 밖에 ^가 쓰이면 시작의 뜻 대괄호([ ]) 안에 ^가 쓰이면 제외의 뜻 |
^s : s로 시작하는 단어 [^s] : s가 아닌 철자인 문자 1개 |
$ | 문자열 종료를 의미 | s$ : s로 끝나는 단어 |
. | 임의의 문자 1개를 의미 | |
[ ] | [ ] 괄호 안에 문자가 있는지 확인 | [ab][cd] : a,b중 한 문자와 c,d중 한 문자 → ac ad bc bd |
() | 그룹 | ab(0|1) : ab뒤에 0 또는 1이 들어감 → ab0(o), ab1(o), ab2(x) |
{} | 횟수, 개수 | s{2} : s가 2개 있다. -> s(x), ss(o), sss(x), ssss(x) |
- | 사이의 문자 혹은 숫자를 의미 | [a-z] : 알파벳 소문자 중 하나 [a-z0-9] : 알파벳 소문자, 0~9 중 하나 |
| | 또는 | [a|b] : a 혹은 b |
\\w | '문자만' 허용하는 정규표현식 (a-z, A-Z, 0-9, …) |
^[\\w]*$ : 문자만 허용 |
\\W | '문자가 아닌 경우에만' 허용하는 정규표현식 ! (a-z, A-Z, 0-9, …) |
^[\\W]*$ : 문자가 아닌 경우만 허용 |
\\d | '숫자만' 허용하는 정규표현식 (0-9) |
^[\\d]*$ : 숫자만 허용 |
\\D | '숫자가 아닌 경우에만' 허용하는 정규표현식 ! (0-9) |
^[\\D]*$: 숫자가 아닐경우만 허용 |
\\s | '공백 문자, 탭만'을 허용만 정규 표현식 (space, tabe, newline) |
^[\\s]*$: 공백문자, 탭만 허용 |
\\S | '공백 문자, 탭이 아닌 경우에만' 허용하는 정규표현식 ! (space, tabe, newline) |
^[\\S]*$: 공백문자, 탭이 아닐경우 허용 |
2. 정규식 수량 기호
기호 | 의미 | 예시 |
* | 앞 문자가 없거나 있거나 많거나 (zero or more) | s0* : 0이 있을수도 없을수도 있다. -> s(o), s0(o), s00(o), s000(o) |
+ | 앞 문자가 하나 또는 많이 (one or more) | s0+ : 0이 하나 이상있다. -> s(x), s0(o), s00(o), s000(o) |
? | 앞 문자가 없거나 있거나 (zero or one) | s0? : 0이 최대 한개만 있거나 없다. -> s(o), s0(o), s00(x), s000(x) |
{n} | n개 만큼 | s{2} : s가 2개 있다. -> s(x), ss(o), sss(x), ssss(x) |
{n,m} | n개 이상 m개 이하 | s{2,3} : s가 2개이상 3개 이하 있다. -> s(x), ss(o), sss(o), ssss(x) |
{n,} | n개 이상 | s{2,} : s가 2개 이상 있다. -> s(x), ss(o), sss(o), ssss(o) |
3. 정규식 활용
1. 자주 사용하는 정규식
정규 표현식 | 설명 |
^[0-9]*$ | 숫자 |
^[a-zA-Z]*$ | 영문자만 |
^[ㄱ-ㅎ|가-힣]*$ | 한글만 |
\\w+@\\w+\\.\\w+(\\.\\w+)? ^[a-zA-Z0-9]+@[0-9a-zA-Z]+\\.[a-z]$ |
|
^(?=.*[a-zA-Z])((?=.*\\d)|(?=.*\\W)).{10,128}$ | 비밀번호 ex) 대소문자 + 숫자 + 특수문자 조합으로 10 ~ 128자리로 정의 |
^[a-z]{1}[a-z0-9]{5,10}$ | 비밀번호 ex) 영문 숫자 조합 6~10자리 |
^[\\d]{2,3}-[\\d]{3,4}-[\\d]{4}$ ^01([0|1|6|7|8|9])-([0-9]{3,4})-([0-9]{4})$ |
휴대전화 ex) 010-1234-5678 |
^[\\d]{6}-[1-4][\\d]{6}$ | 주민번호 |
^[\\d]{3}-[\\d]{2}$ | 우편번호 |
^[\\w]*$ | 문자열만 허용 - 공백 미 허용 |
^[\\W]*$ | 문자열만 허용 - 공백 허용 |
^[\\d]*$ | 숫자만 허용 |
^[\\D]*$ | 숫자가 아닌 경우 허용 |
^[\\s]*$ | 공백, 탭을 허용 |
^[\\S]*$ | 공백, 탭이 아닌 경우를 허용 |
2. 날짜, 시간 정규식
정규표현식 | 설명 |
^[\\d]{4}-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[01])$ ^(19|20)[\\d]{2}-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[01])$ |
날짜1 ex) 2024-12-08 (YYYY-MM-DD) |
([0-2][0-9]{3})\\/([0-1][0-9])\\/([0-3][0-9]) ([0-5][0-9]):([0-5][0-9]):([0-5][0-9])(([\\-\\+]([0-1][0-9])\\:00))? | 날짜2 ex) 2024/12/08 08:30:44 (YYYY/MM/DD hh:mi:ss) |
^([1-9]|[01][0-9]|2[0-3]):([0-5][0-9])$ | 시간1 ex) 20:30(HH24:mm) |
3. 자바 정규식 활용
String txt = "123456";
boolean result = txt.matches("[0-9]+"); // 숫자 체크
System.out.println(result); // true
// replaceAll (정규표현식과 일치하는 모든 값 치환)
String txt2 = "test123*-;";
String result2 = txt2.replaceAll("[^a-z0-9]","0"); // 영문자와 숫자를 제외한 문자를 모두 0으로 치환
System.out.println(result2); // test123000
// split (정규표현식과 일치하는 값 기준으로 나누기)
String txt3 = "test123*-;";
String[] txts = txt3.split("[0-9]+"); // 숫자부분을 기준으로 분할
System.out.println(txts[0]); // test
System.out.println(txts[1]); // *-;
https://adjh54.tistory.com/104
잘못된 내용이 있다면 지적부탁드립니다. 방문해주셔서 감사합니다. |
반응형
'개발공부 > Java' 카테고리의 다른 글
[Java] break, contiune문 사용법 (0) | 2024.11.24 |
---|---|
[Java] Map 메서드 활용법 (0) | 2024.11.19 |
[Java] 소수 구하기 (2) | 2024.09.26 |
[Java] 최대공약수, 최소공배수 구하기 (0) | 2024.09.20 |
[Java] 약수의 개수 구하기 (0) | 2024.09.15 |