자바 정규 표현 식 단순 사용 및 웹 파충류 제작 코드

3211 단어
정규 표현 식 은 문자열 에 대한 조작 을 위 한 규칙 입 니 다.
1. String 클래스 에서 문자열 을 일치 시 키 고 자 르 는 방법 이 있 습 니 다.
문자열 이 정규 표현 식 과 일치 하 는 지 판단 하기: boolean matches (String regex);
주어진 정규 표현 식 에 따라 문자열 을 자 른 것: String []    split(String regex);
정규 표현 식 에 맞 는 문자열 을 원 하 는 다른 문자열 로 바 꿉 니 다: String  replaceAll(String  regex,String replacement)
2. 정규 표현 식 에서 자주 사용 하 는 용법 을 소개 한다.
(1)
 
  
String regex="[1-9][0-9]{4,15}";
//[1-9] 1-9
//[0-9] 0-9
//{4,15} 4-15

이 정규 표현 식 은 첫 번 째 숫자 는 1 - 9 중 임의의 숫자 여야 하 며, 그 다음 에는 0 - 9 의 숫자 중 하나 가 나타 나 야 하 며, 이 숫자 는 적어도 4 번, 많아야 15 번 이 나타 나 야 한 다 는 뜻 이다.
예:
10175   맞다 
10. 일치 하지 않 습 니 다. [0 - 9] {4, 15}, 적어도 4 번 이상 나타 나 야 하기 때문에 여기 서 한 번 밖 에 나타 나 지 않 았 습 니 다.
(2)
[a - zA - Z0 - 9] {6} 은 마침 a - z 또는 A - Z 또는 가 6 번 나타 나 야 한 다 는 뜻 이다.  문자
+ 적어도 한 번 은 나타 나 는
* 0 번 또는 여러 번 나타 남
?한번
(3) 정규 표현 식 에 따라 문자열 을 자 릅 니 다.
 
  
String str="sjd.ksdj.skdjf";

String regex="\\.";


주의:  . 정규 표현 식 에 서 는 표 식 의 임의의 문자 로 특수 한 기호 입 니 다.자 르 려 면 일반 문자 로 바 꿔 야 합 니 다. \ \ \ 를 사용 하면 됩 니 다.
특수 기호 이기 때문에 두 개 로 표시 해 야 합 니 다.우리 가 보통 \ 를 사용 하려 면 \ \ \ \ 로 표시 해 야 합 니 다.
String[] ss=str.split(regex); 문자열 배열 되 돌려 주기: "sjd"  "ksdj"  "skdjf"  기 존 문자열 에 대한 절단 을 실현 하 였 습 니 다.
(4) 정규 표현 식 에 따라 우리 가 바 꾸 고 싶 은 것 을 교체 합 니 다.
문자열 에 연속 으로 5 개 이상 나타 나 는 모든 숫자 문자열 을 \ # 로 바 꿉 니 다.
 
  
String str="abcd1334546lasjdfldsf2343424sdj";

String regex="[0-9]{5,}";

String   newstr=str.replaceAll(regex,"#");


(5) 정규 표현 식 규칙 에 맞 는 문자열 가 져 오기
 
  
Pattern p=Pattern.compile(String regex);

Matcher  m=p.matcher(String str);

while(m.find())

{

System.out.println(m.group());

}


3. 홈 페이지 파충류 만 들 기
우 리 는 웹 페이지 의 모든 메 일 을 읽 고 꺼 내 텍스트 파일 에 저장 할 수 있 는 메 일 을 만 들 었 다.
 
  
/*


*/
import java.io.*;
import java.util.regex.*;
import java.net.*;
class  MailTest
{
 public static void main(String[] args) throws Exception
 {
  getMailAddr();
 }

 public static void getMailAddr()throws Exception
 {
  URL url=new URL("http://bbs.jb51.net/topics/390148495");
  URLConnection con=url.openConnection();

  BufferedReader bufIn=new BufferedReader(new InputStreamReader(con.getInputStream()));
  BufferedWriter bufw=new BufferedWriter(new FileWriter(new File("e://mailaddress.txt")));
  String str=null;
  String regex="[a-zA-Z0-9_]{6,12}@[a-zA-Z0-9]+(\\.[a-zA-Z]+)+";

  Pattern p=Pattern.compile(regex);
  while((str=bufIn.readLine())!=null)
  {
   Matcher m=p.matcher(str);
   while(m.find())
   {
    String ss=m.group();
    bufw.write(ss,0,ss.length());
    bufw.newLine();
    bufw.flush();
   }
  }


 }
}

좋은 웹페이지 즐겨찾기