자바 정규 표현 식 과 웹 페이지 파충류 제작

정규 표현 식 은 문자열 에 대한 조작 을 위 한 규칙 입 니 다.
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.csdn.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();

			}

		}





	}

}


 

좋은 웹페이지 즐겨찾기