Today I Learned
(24.05.08)[4주차] java.util.regex 패키지 정규식 확용
CODE KATA를 진행하면서 나름대로 쉽게 진행할 수 있는 것을 사전캠프에 배웠던 것을 최대한 활용하려고 한다.
CODE KATA 정리
java.util.regex 패키지 정규식 확용
더보기
import java.util.regex.*;
public class Main {
public static void main(String[] args) {
String s = "123456";
Pattern pattern = Pattern.compile("\\d+");
Matcher matcher = pattern.matcher(s);
boolean answer = matcher.matches();
System.out.println(answer); // true 반환
System.out.println(s.matches("[0-9]+")); // true 반환
}
}
- 주어진 문자열에 0~9의 양의 정수가 포함되어 있는지 확인하는 코드를 정규식을 사용해서 활용
- 정규식을 사용하지 않을 경우, 다중 for문을 활용해서 문자열을 구성하는 Character 하나하나 0~9 까지 비교한 후, 포함되면 count를 올려주는 식이어야 했음
- 정규식을 이미 배웠지만, 실제로 막상 사용하려고 했을 때, 순간 막힐 수 있음
- 하지만, 빠르게 원하는 String을 찾아주기 때문에 반드시 숙지할필요!
- **중요** 그냥 .matches("정규식") 처럼 사용해도 상관없이 정규식 패턴에 맞춰 해당 문자열에 대해 boolean값으로 반환
정규식
Pattern (패턴이름) = Pattern.compile("정규식 패턴");
Matcher (매쳐이름) = (패턴이름).matcher(정규식을 써서 매칭할 대상);
(매쳐이름).matches();
(정규식을 써서 매칭할 대상).matches("정규식 패턴");
- 위의 형태를 기본으로 사용
- 밑의 함축된 형태도 사용
- 단, import java.util.regex.*; 앞에 import 시키는 것 잊지 말아야함
- 많이 쓸 것 같은 정규식 패턴 정리
- \d : 모든 숫자열 0~9
- \w : 대소문자 모든 알파벳, 모든 숫자열 0~9
- \\d
- 맨 앞의 \는 문자열 escape, 종료를 뜻함, 따라서 0~9 숫자 digit 의 문자열을 뜻함, \d \w처럼 백슬래시를 포함한 패턴의 문자열화를 시키기 위해 구분하기 위해 사용
- 결국 0~9 중 하나의 문자열인지 확인
- + :
- 앞의 패턴 이상의 문자열
- \\d+ 일경우에는 1개 이상의 문자열이 모두 0~9 중 하나에 부합하는 지를 모든 패턴
- []
- 괄호 사이의 영역중 해당하는 문자열 [0-9] [a-zA-Z0-9] 이렇게 사용
- 위 코드에서 그냥 \\d+ 대신 직관적으로 [0-9]+ 로 쓰여 둘이 똑같은 식
- .*
- 앞의 패턴과 일치하는지 확인, 뒤에 어떤것이 붙어있어도 상관 없음
코멘트
- 정규식 패턴은 일정한 패턴이 있는것이 아니라, 일종의 규칙의 조합이기 때문에, 모든 정규식을 외워서 쓸 필요가 없다는 것을 이미 사전에 공부를 했기 때문에 반드시 다 외울 필요 X
- 단, 숫자로만/알파벳으로만 이뤄진 문자열 또는 특정 문자로 시작하는 문자열을 확인하기 위해서 간단한 문자열 패턴은 미리 위 처럼 알고 있어야할 것
배운 것을 토대로 팀의 과제역시 동시에 진행해서 조금 헷갈리기 때문에 조금 시간이 걸리는 것 같다
그래도 이번주는 팀 과제를 잘 정리하면서 마무리할 수 있도록!
'Today I Learned' 카테고리의 다른 글
(24.05.10)[5주차] n진수로 바꾸기 & StringBuffer (0) | 2024.05.10 |
---|---|
(24.05.09)[4주차] 유클리드 호세법 최대공약수, 최소공배수 (0) | 2024.05.09 |
(24.05.07)[4주차] 오버플로우 처리, Collections 클래스의 sort() 와 Comparator (0) | 2024.05.07 |
(24.05.04)[3주차] WIL (0) | 2024.05.04 |
(24.05.03)[3주차] 0/0 NaN , Stream -> List 변환 (0) | 2024.05.03 |