반응형
정규표현식 기본 개념
정규표현식은 패턴이나 규칙을 나타내는 문자열입니다. 이 문자열은 검색하거나 치환하려는 대상 문자열과 함께 사용됩니다. 정규표현식에서 사용되는 특수문자는 일반적인 문자열과는 다르며, 이러한 특수문자를 메타문자라고 합니다.
정규표현식에서 사용되는 일반적인 메타문자는 다음과 같습니다.
- . : 임의의 한 문자를 의미합니다.
- * : 앞의 문자가 0개 이상 나타남을 의미합니다.
- + : 앞의 문자가 1개 이상 나타남을 의미합니다.
- ? : 앞의 문자가 0개 또는 1개 나타남을 의미합니다.
- \d : 숫자를 의미합니다.
- \w : 알파벳, 숫자, 밑줄 문자를 의미합니다.
- [] : 대괄호 안의 문자 중 하나와 일치합니다.
- () : 괄호 안의 문자열을 그룹화합니다.
정규표현식 사용 예제
1. 전화번호 추출
정규표현식을 사용하여 이메일 주소를 검사할 수 있습니다. 이메일 주소는 username@domain.com과 같은 형식으로 되어 있으므로, @ 기호를 사용하여 문자열을 분리할 수 있습니다.\
2. 이메일 추출
정규표현식을 사용하여 문자열에서 전화번호를 추출할 수 있습니다. 전화번호는 일반적으로 010-1234-5678과 같은 형식으로 표현되며, 하이픈으로 구분됩니다.
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class RegexExample {
public static void main(String[] args) {
// 검색할 문자열
String text = "Hello, my phone number is 123-456-7890. Please call me back " +
" My email is example123@gmail.com. Please contact me.";
// 패턴 지정
String patternPhone = "\\d{3}-\\d{3}-\\d{4}";
String patternEmail = "\\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,}\\b";
// 패턴 객체 생성
Pattern p = Pattern.compile(patternPhone);
Pattern e = Pattern.compile(patternEmail);
// 문자열에서 패턴 검색
Matcher m1 = p.matcher(text);
Matcher m2 = e.matcher(text);
// 검색된 패턴 추출
while (m1.find()) {
String phoneNumber = m1.group();
System.out.println("Phone number found: " + phoneNumber);
}
while (m2.find()){
String email=m2.group();
System.out.println("Email found " + email);
}
}
}
정규표현식 문법
1. 문자 클래스
문자 클래스는 [ ] 사이에 들어가며, 해당 문자 클래스에 속한 문자 중 하나와 매치되는 것을 의미합니다.
- [abc]: a, b, c 중 하나와 매치
- [a-z]: a부터 z까지 중 하나와 매치
- [A-Z]: A부터 Z까지 중 하나와 매치
- [0-9]: 0부터 9까지 중 하나와 매치
- [가-힣]: 가부터 힣까지 중 하나와 매치
- [^a-z]: a부터 z까지 문자가 아닌 것과 매치
2. 반복자
반복자는 { } 안에 숫자를 넣어서 해당 문자 또는 문자 클래스가 나타나는 횟수를 지정합니다.
- a{3}: a가 3번 나타나는 것과 매치
- a{2,4}: a가 2번 이상 4번 이하로 나타나는 것과 매치
- a{2,}: a가 2번 이상 나타나는 것과 매치
- a+: a가 1번 이상 나타나는 것과 매치
- a*: a가 0번 이상 나타나는 것과 매치
- a?: a가 0번 또는 1번 나타나는 것과 매치
3. 그룹
그룹은 ( ) 안에 들어가며, 해당 그룹 내의 패턴과 매치되는 문자열을 추출할 수 있습니다.
- (ab)+: ab가 1번 이상 연속해서 나타나는 것과 매치 (ex. abab, ababab)
- (a|b)+: a 또는 b가 1번 이상 연속해서 나타나는 것과 매치 (ex. a, b, aa, ab, ba, bb)
- ([a-z]+) \1: a부터 z까지의 소문자가 1번 이상 나타나고, 그 다음에 나타나는 같은 문자열과 매치 (ex. abab, baba, cccc)
4. 앵커
앵커는 문자열의 특정 위치에 매치됩니다.
- ^a: 문자열의 시작부터 a와 매치
- a$: 문자열의 끝부분에 a와 매치
- \b: 단어의 경계(boundary)에 매치
5. 특수 문자
- \d: 숫자와 매치
- \D: 숫자가 아닌 것과 매치
- \w: 숫자와 문자, 언더스코어(_)와 매치
- \W: 숫자와 문자, 언더스코어(_)가 아닌 것과 매치
- \s: 공백 문자와 매치
- \S: 공백 문자가 아닌 것과 매치
- .: 줄바꿈 문자를 제외한 모든 문자와 매치
https://regexr.com/ 이 사이트를 통해 정규표현식을 사용해볼 수 있습니다!
반응형
'Spring' 카테고리의 다른 글
Java Spring_ @Mapping (0) | 2023.03.05 |
---|---|
Java Spring JPA (Cascade vs EntityManager.persist()) (0) | 2023.03.05 |
Spring Framework_ApplicationEventPublisher,@EventListener (0) | 2023.03.03 |
Spring을 이용해 이메일 보내는 방법 (0) | 2023.03.02 |
Spring Data JPA _ 페이징처리 (0) | 2023.02.22 |