RegEx
正则表达式:符合一定规则的表达式
作用:用于专门操作字符串[操作字符串的一种规则]
特点:用一些特定的符号来表示一些代码操作.这样就可以简化书写
好处:可以简化对字符串的复杂操作
弊端:符号定义越多,正在越长,阅读性越差….
学习正则表达式,就是在学习一些特殊符号的作用.
具体操作功能:
1,匹配match-es[匹配]
| boolean | matches(String regex)将regex正则表达式作用到该字符串上 |
用规则匹配整个字符串,只要有一处不符合,就返回flase.

2,切割sp-lit[劈开]
| String[] | |
| String[] |
注意: ((A)(B(C)))-----一共为四组,只要看单个的开括号就成了.

3替换re-pla-ce[替换]
| 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 | |
| matcher(CharSequence input) |

java.util.regex
类 Matcher
| boolean | find() |
| 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"));
//爬这一断代码"数字 </span>技术分"
//还爬一下这断代码"name">用户名<"
String line = null;
while ((line=br.readLine())!=null)
{
String regex = "\\d+ </span>技术分";
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(" </span>");
if(Integer.parseInt(arr[0])>=25)
{
bw.write("姓名:"+name+"\t\tUID:"+x+"\t"+arr[1]+arr[0]);
bw.newLine();
bw.flush();
}
}
}
}
bw.close();
}
}
本文介绍了正则表达式的基本概念及应用,包括匹配、切割、替换等操作,并提供了实际案例,如IP地址排序和邮件地址验证。此外,还展示了如何使用正则表达式进行网页爬虫,抓取特定信息。

被折叠的 条评论
为什么被折叠?



