nme.kr

차이

문서의 선택한 두 판 사이의 차이를 보여줍니다.

차이 보기로 링크

양쪽 이전 판 이전 판
다음 판
이전 판
프로그램:java:ㄴhomework:book_source:ch12 [2022/01/05 11:33]
clayeryan@gmail.com [Simple date format]
프로그램:java:ㄴhomework:book_source:ch12 [2023/07/13 17:29] (현재)
clayeryan@gmail.com ↷ 문서가 programmer:java:ㄴhomework:book_source:ch12에서 프로그램:java:ㄴhomework:book_source:ch12(으)로 이동되었습니다
줄 1: 줄 1:
-====== Chaptor12 기본 API ======+====== Ch.12 기본 API ======
  
 ===== java.lang 패키지 ===== ===== java.lang 패키지 =====
줄 1273: 줄 1273:
 </code> </code>
 ===== java.util.regex 패키지 ===== ===== java.util.regex 패키지 =====
 +
 +**정규표현식을 사용하기 위한 패키지**
 +
 +<code java>
 +package chapter12;
 +
 +import java.util.regex.Matcher;
 +import java.util.regex.Pattern;
 +
 +public class ReEx {
 +
 + public static void main(String[] args) {
 +
 + // 소문자 b로 시작하는  알파벳 소문자 0개 이상 규칙
 + Pattern p = Pattern.compile("b[a-z]*");
 + Matcher m;
 +
 + // 문자열 bat 확인
 + m = p.matcher("bat");
 + System.out.println("bat = "+m.matches());
 +
 + // 문자열 cat 확인
 + m = p.matcher("cat");
 + System.out.println("cat = "+m.matches());
 +
 + // 문자열 bed 확인
 + m = p.matcher("bed");
 + System.out.println("bed = "+m.matches());
 +
 + }
 +
 +}
 +
 +</code>
 +
 +|1. Pattern 클래스의 static 메서드 copile에 정규표현식을 매개변수로 넣고 객체 생성 Pattern p = Pattern.copile("b[a-z]*");|
 +|2. Matcher 클래스를 이용해 생성한 패턴 책체의 matcher() 메서드의 매개변수로 비교할 대상 문자열을 넣어 Matcher 객체 생성|
 +|
 +  Matcher m;
 +  m= p.matcher("bat");  
 +|
 +|3. Matcher 객체에 amtchers() 메서드를 호출해 매칭이 되었는지(true) 안 되었는지(false) 판단 if (m.matchers()) {...}|
 +
 +
 +
  
 ==== 정규 표현식에 사용되는 문자 ==== ==== 정규 표현식에 사용되는 문자 ====
  
 ==== 정규 표현식으로 문자열검증 ==== ==== 정규 표현식으로 문자열검증 ====
 +**Pattern 클래스의 static 메서드 matches() 메서드 사용**
 +<code java>
 +package chapter12;
  
 +import java.util.regex.Matcher;
 +import java.util.regex.Pattern;
  
 +public class ReEx2 {
  
 + public static void main(String[] args) {
 +
 + String[] patterns = {"." ,"[a-z]?","[0-9]+","0[1-9]*","^[0-9]",
 + "[^0-9]","[a-z]*","[a-z]+","02|010" ,"\\s", "\\S" ,"\\d" ,"\\w","\\W"};
 + String[] datas = {"bat","021231234","12345","011","bed","02","A","9","a","*"};
 +
 + for(String d : datas) {
 + System.out.print(d+"문자와 일치하는 패턴 : ");
 + for(String p : patterns) {
 + Pattern pattern = Pattern.compile(p);
 + Matcher m = pattern.matcher(d);
 + if(m.matches()) {
 + System.out.print(p+", ");
 + }
 + }
 + System.out.println();
 + }
 + }
 +
 +}
 +
 +</code>
 +
 +<code java>
 +package chapter12;
 +
 +import java.util.regex.Matcher;
 +import java.util.regex.Pattern;
 +
 +public class ReEx3 {
 +
 + public static void main(String[] args) {
 +
 + String source = "휴대폰번호:010-1111-1111, 집전화번호:02-1234-5678,"
 + + "이메일주소:[email protected] 계좌번호:123-12-123456";
 + String telpattern = "(0\\d{1,2})-(\\d{3,4})-(\\d{4})";
 + String emailpattern = "(\\w+)@(\\w+).(\\w+)";
 + String accountpattern = "(\\d{3})-(\\d{2})-(\\d{6})";
 +
 + Pattern p = Pattern.compile(telpattern);
 + Matcher m = p.matcher(source);
 +
 + System.out.println("전화번호 : ");
 + while(m.find()) { // 지정된 패턴 맞는 문자열을 검색
 + System.out.println(m.group() + " : "
 + + m.group(1) + "," + m.group(2) + "," + m.group(3));
 + }
 +
 + p = Pattern.compile(emailpattern);
 + m = p.matcher(source);
 + System.out.println("이메일 : ");
 + while(m.find()) { // 지정된 패턴 맞는 문자열을 검색
 + System.out.println(m.group() + " : "
 + + m.group(1) + "," + m.group(2) + "," + m.group(3));
 + }
 +
 + p = Pattern.compile(accountpattern);
 + m = p.matcher(source);
 + System.out.println("계좌번호 : ");
 + while(m.find()) { // 지정된 패턴 맞는 문자열을 검색
 + System.out.println(m.group() + " : "
 + + m.group(1) + "," + m.group(2) + "," + m.group(3));
 + }
 +
 + }
 +
 +}
 +
 +</code>