『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) |
4,获取
Patt-ern[模式] com-pile[编译] mat-cher[匹配器] se-quence [数][计] 序列
字符串中的符合规则的子串取出
操作步骤:
>1,将正则表达式封装成对象Pattern p=Pattern. compile(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();}}
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
