다크호스 프로그래머정규 표현 식 (정규 일치, 교체, 절단, 획득, 정규 연습)

5538 단어
--------- 안 드 로 이 드 교육, 자바 교육, 당신 과 의 교 류 를 기대 합 니 다!
정규 표현 식 특징
1. 정규 표현 식: 일정한 규칙 에 맞 는 표현 식.  역할: 문자열 을 전문 적 으로 조작 하 는 데 사용 합 니 다.  특징: 일부 특정한 기호 로 코드 조작 을 표시 합 니 다.이렇게 하면 간단하게 쓴다.  그래서 정규 표현 식 을 배 우 는 것 은 특수 기호의 사용 을 배 우 는 것 이다.
  장점: 문자열 에 대한 복잡 한 조작 을 간소화 할 수 있 습 니 다.  단점: 기호 정의 가 많 을 수록 정규 가 길 어 지고 읽 기 가 떨어진다.
2. 구체 적 인 조작 기능: 1) 일치: String matches 방법. 2) 절단: String split (); 3) 교체: String replace All ();
3. String 클래스 의 방법:  boolean matches (String regex) 는 이 문자열 이 주어진 정규 표현 식 과 일치 하 는 지 알려 줍 니 다.  public boolean matches (String regex) 는 이 문자열 이 주어진 정규 표현 식 과 일치 하 는 지 알려 줍 니 다.  이 방법 을 사용 하 는 str. matches (regex) 형식 은 다음 표현 식 과 똑 같 습 니 다.
  Pattern.matches(regex, str)
  인자:  regex - 이 문자열 과 일치 하 는 정규 표현 식  돌아 가기:  이 문자열 이 주어진 정규 표현 식 과 일치 할 때 만 true 로 돌아 갑 니 다.  던 지기:  PatternSyntax Exception - 정규 표현 식 의 문법 이 잘못 되면
2 획득 기능
1.  작업 단계:  1) 정규 표현 식 을 대상 으로 봉인 합 니 다.  2) 정규 대상 을 조작 할 문자열 과 연결 합 니 다.  3) 연결 후 정규 일치 엔진 을 가 져 옵 니 다.  4) 엔진 을 통 해 규칙 에 맞 는 하위 문자열 을 꺼 내 는 등 조작 합 니 다. 2. 클래스 패턴 (java. util. regex)  1) 정규 표현 식 의 컴 파일 표시 형식.  문자열 로 지정 한 정규 표현 식 은 먼저 이러한 인 스 턴 스 로 컴 파일 되 어야 합 니 다.그리고 얻 은 모드 를 Matcher 대상 을 만 드 는 데 사용 할 수 있 습 니 다.  정규 표현 식 에 따라 이 대상 은 임의의 문자 시퀀스 와 일치 할 수 있 습 니 다.일치 하 는 모든 상 태 를 일치 하 는 장치 에 저장 합 니 다.  그래서 여러 개의 매 칭 기 는 같은 모드 를 공유 할 수 있 습 니 다.  따라서 전형 적 인 호출 순 서 는?  Pattern p = Pattern.compile("a*b");   Matcher m = p.matcher("aaaaab");   boolean b = m.matches();  2) 방법 요약  static Pattern compile(String regex)      주어진 정규 표현 식 을 모드 에 컴 파일 합 니 다.  Matcher matcher(CharSequence input)      이 모드 와 일치 하 는 입력 기 를 만 듭 니 다.  static boolean matches(String regex, CharSequence input)      주어진 정규 표현 식 을 컴 파일 하고 주어진 입력 을 일치 시 키 려 고 시도 합 니 다.  String pattern()      이 모드 를 컴 파일 한 정규 표현 식 을 되 돌려 줍 니 다.  static Pattern compile(String regex, int flags)      주어진 정규 표현 식 을 주어진 플래그 가 있 는 모드 로 컴 파일 합 니 다.  int flags()      이 모드 의 일치 표 지 를 되 돌려 줍 니 다.  String[] split(CharSequence input)      이 모드 를 둘 러 싼 일치 분할 입력 시퀀스 입 니 다. 3. 클래스 Matcher (java. util. regex)
  1) Pattern 이 character sequence 에 대해 일치 하 는 동작 을 수행 하 는 엔진 을 설명 합 니 다.
  모드 를 호출 하 는 matcher 방법 으로 모드 에서 일치 기 를 만 듭 니 다.일치 기 를 만 든 후 세 가지 서로 다른 일치 동작 을 수행 할 수 있 습 니 다.
  matches 방법 은 전체 입력 시퀀스 를 이 모드 와 일치 시 키 려 고 시도 합 니 다.
  lookingAt 입력 시퀀스 를 처음부터 이 모드 와 일치 시 키 려 고 시도 합 니 다.
  find 방법 은 입력 시퀀스 를 검색 하여 이 모드 와 일치 하 는 다음 하위 시퀀스 를 찾 습 니 다.
  모든 방법 은 성공 이나 실 패 를 나타 내 는 불 값 을 되 돌려 줍 니 다.일치 하 는 상 태 를 조회 하면 성공 적 인 일치 에 대한 더 많은 정 보 를 얻 을 수 있 습 니 다.
2) 방법 요약  int end()      마지막 일치 하 는 문자 의 오프셋 을 되 돌려 줍 니 다.  boolean find()      이 모드 와 일치 하 는 입력 시퀀스 의 다음 하위 시퀀스 를 찾 아 보십시오.  boolean find(int start)      이 매 칭 기 를 리 셋 한 다음 이 모드 와 일치 하 는 색인 에서 시작 하 는 입력 시퀀스 의 다음 하위 시퀀스 를 찾 아 보십시오.  String group()      이전에 일치 하 는 작업 에 일치 하 는 입력 서브 시퀀스 를 되 돌려 줍 니 다.  boolean lookingAt()      영역 에서 시작 하 는 입력 시퀀스 를 이 모드 와 일치 시 키 려 고 시도 합 니 다.  boolean matches()      전체 영역 을 패턴 과 일치 시 키 려 고 시도 합 니 다.  Pattern pattern()      이 일치 기 설명 모드 를 되 돌려 줍 니 다.  int start()      이전에 일치 하 는 초기 색인 을 되 돌려 줍 니 다.  Matcher reset()      일치 하 는 장 치 를 초기 화 합 니 다.  String replaceAll(String replacement)      교체 모드 는 주어진 교체 문자열 과 일치 하 는 입력 시퀀스 의 모든 하위 시퀀스 입 니 다.
정규 표현 식 연습
/ * 필요 1: 다음 문자열 을: 프로 그래 밍 을 배 우려 고 합 니 다. String str = "나 는... 나 는..........................................................................
*/
class  
{
 public static void main(String[] args) 
 {
  String str = "  .. ..  ... .. .  . .. . .. ....  ...";
  
  str = str.replaceAll("\\.","");
  System.out.println(str);
  str = str.replaceAll("(.)\\1+" ,"$1");
  System.out.println(str);
 }
}
 
 

 /* 필요 2: 192.68.1.254 102.49.23.13 10.10.10.10 2.2.2.2 8.109.90.30  IP 주 소 를 주소 순 으로 정렬 합 니 다.
 도대체 네 가지 기능 중 어느 것 을 사용 합 니까?아니면 어떤 거 요? 사고방식: 1. 이 문자 가 옳 고 그 름 만 알 고 싶다 면 일치 하 는 것 을 사용 하 십시오. 2. 기 존 문자열 을 다른 문자열 로 바 꾸 려 면 바 꾸 십시오. 3. 문자열 을 여러 문자열 로 바 꾸 려 고 합 니 다.절단: 규칙 이외 의 하위 문자열 가 져 오기. 4. 필요 한 문자열 문자열 을 가 져 오 려 면 규칙 에 맞 는 문자열 을 가 져 오 십시오.
  문자열 의 자 연 스 러 운 순서에 따라 단락 마다 세 자리 씩 만 들 면 된다. 1. 각 단락 에 필요 한 최대 0 으로 보완 하면 단락 마다 최소 3 명 이 보장 된다. 2. 한 단락 당 세 자리 만 유지 합 니 다.이렇게 모든 IP 주 소 는 단락 당 3 자리 입 니 다. * /
 public class RegexTest {
 public static void main(String[] args){
 
 String str = "192.68.1.254 102.49.23.13 10.10.10.10 2.2.2.2 8.109.90.30";
 str = str.replaceAll("(\\d+)","00$1");
 System.out.println(str);
 str = str.replaceAll("0*(\\d{3})","$1");
 System.out.println(str);
 String ips[]  = str.split(" ");
 
 TreeSet<String> ts = new TreeSet<String> ();
 for(String ip : ips)
  ts.add(ip);
 }
 for(String ip : ts){
  String ip = ip.replaceAll("0*(\\d+)","$1");
 }
}

/ * 필요 3: 메 일 주 소 를 검사 하 다.   지정 한 문서 의 메 일 주 소 를 가 져 옵 니 다.(홈 페이지 파충류) 획득 기능 을 사용 합 니 다.Pattern Matcher   [email protected] */
class Test
{
 public static void main(String[] args)
 {
  URL  url = new URL("http://tieba.baidu.com/p/2346233770");
  URLConnection conn = url.openConnection();
  BufferedReader bufr = 
   new BufferedReader(new InputStreamReader(conn.getInputStream());
  String line = null;
  String mailRegex = "\\w+@\\w+(\\.\\w)+";
  Pattern p = Pattern.compile(mailRegex);
   
  while((line = bufr.readLine())!= null){
   
   Matcher m = p.matcher(line);
   while(m.find())
   {
    System.out.println(m.group());
   }
  }
 }
}
 

 

좋은 웹페이지 즐겨찾기