『Java』网络编程--正则表达式

RegEx

正则表达式:符合一定规则的表达式

作用:用于专门操作字符串[操作字符串的一种规则]

特点:用一些特定的符号来表示一些代码操作.这样就可以简化书写

好处:可以简化对字符串的复杂操作

弊端:符号定义越多,正在越长,阅读性越差….

学习正则表达式,就是在学习一些特殊符号的作用.

具体操作功能:

1,匹配match-es[匹配]

 

 boolean

matches(String regex)将regex正则表达式作用到该字符串上 
告知此字符串是否匹配给定的正则表达式。

用规则匹配整个字符串,只要有一处不符合,就返回flase.

 

 

 

 

 

2,切割sp-lit[劈开]

String[]

split(String regex) 
          根据给定正则表达式的匹配拆分此字符串。

 String[]

split(String regex, int limit) 
       根据匹配给定的正则表达式来拆分此字符串。

注意:  ((A)(B(C)))-----一共为四组,只要看单个的开括号就成了.

 

3替换re-pla-ce[替换]

 String

replaceAll(String regex, String replacement) 
使用给定的 replacement 替换此字符串所有匹配给定的正则表达式的子字符串。

 

 

 

 

 

4,获取

Patt-ern[模式]  com-pile[编译] mat-cher[匹配器] se-quence [数][计] 序列

字符串中的符合规则的子串取出

操作步骤:

>1,将正则表达式封装成对象Pattern p=Patterncompile(String regex);

>2,让正则对象和要操作的字符串相关联,并获取正则匹配引擎

Matcher m=p. matcher(CharSequence input)

>3,通过引擎对符合规则的子串进行操作,比如取出.

java.util.regex 
类 Pattern

static Pattern

compile(String regex) 
          将给定的正则表达式编译到模式中。

 Matcher

matcher(CharSequence input) 
      创建匹配给定输入与此模式的匹配器。

 

 

 

java.util.regex 
类 Matcher

 boolean

find() 
  尝试查找与该模式匹配的输入序列的下一个子序列。

 String

group() 
          返回由以前匹配操作所匹配的输入子序列。

 

 int

start() 
          返回以前匹配的初始索引。

 int

end() 
          返回最后匹配字符之后的偏移量。

 

Exercise1:

 

Exercise2:对Ip地址进行地址段的排序

 

 

Exercise3:对邮件地址进行校验

 

 

 

 

 

 

网页爬虫(蜘蛛)

 

 

 

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.InputStreamReader;
import java.net.URL;
import java.net.URLConnection;
import java.util.regex.Matcher;
import java.util.regex.Pattern;/*** 需求:爬黑马BBS的用户。* 技术分超过25的* 存入一个文件中。* 格式为:姓名xxx UIDxxx 技术分xxx*/class Url
{static String name = null;public static void main(String[] args) throws Exception{BufferedWriter bw = new BufferedWriter(new FileWriter("f:\\io\\person.txt"));for(int x=98200;x<100000;x++){//创建连接。直接用UEL,很牛的一个对象,URL url = new URL("http://bbs.itheima.com/space-uid-"+x+".html");URLConnection ucc = url.openConnection();BufferedReader br = new BufferedReader(new InputStreamReader(ucc.getInputStream(),"utf-8"));//爬这一断代码"数字 技术分"//还爬一下这断代码"name">用户名<"String line = null;while ((line=br.readLine())!=null){				String regex = "\\d+ 技术分";Pattern p = Pattern.compile(regex);Matcher m = p.matcher(line);String regex2 = "name\">.+<";Pattern p2 = Pattern.compile(regex2);Matcher m2 = p2.matcher(line);while (m2.find()){					name = m2.group();name = name.replace( "name\">","");name = name.replace("<", "");}while (m.find()){//把数据存入一个指定的文件中String s= m.group();String[] arr = s.split(" ");if(Integer.parseInt(arr[0])>=25){bw.write("姓名:"+name+"\t\tUID:"+x+"\t"+arr[1]+arr[0]);bw.newLine();bw.flush();}}				 }}bw.close();}}

 

 

 

 

 


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部