1、正则表达式(特点)
正则表达式:符合一定规则的表达式。
作用:用于专门操作字符串。
特点:用于一些特定的符号来表示一些代码操作,这样就简化了书写。
好处:可以简化对字符串的复杂操作。
弊端:符号定义越多,正则越长,阅读性越差
2、正则表达式(匹配、切割、替换)
具体操作功能:
1.匹配:String matches方法。用规则匹配整个字符串,只要有一处不符合规则,就匹配结束,返回false。
2.切割:String split();
3.替换: String replaceAll();
3、正则表达式(获取)
获取:将字符串中符合规则的字串取出
操作步骤:
1.将正则表达式封装成对象;
2.让正则对象和要操作的字符串相关联;
3.关联后,获取正则匹配引擎;
4.通过引擎对符合规则的字串进行操作,比如取出。
public final class Pattern extends Objectimplements Serializable 正则表达式的编译表示形式
4、正则表达式(练习)
需求:将下列字符串转成:我要学编程
到底用四种功能中的哪一个呢?或者哪几个呢?
思路方式:
1.如果只想知道该字符是否对是错,使用匹配;
2.想要将已有的字符串变成另一个字符串,替换。
3.想要按照自定义的方式将字符串编程多个字符串,切割。获取规则以外的字串;
4.想要拿到符合需求的字符串字串,获取,获取符合规则的字串
public static void ipSort()
{
String ip = "192.168.1.254102.49.23.013 10.10.10.10 2.2.2.2 8.109.90.30";
ip =ip.replaceAll("(\\d+)","00$1");
System.out.println(ip);
ip =ip.replaceAll("0*(\\d{3})","$1");
System.out.println(ip);
String[] arr = ip.split(" +");
TreeSet<String> ts = newTreeSet<String>();
for(String s :arr)
{
ts.add(s);
}
for(String s:ts)
{
System.out.println(s.replaceAll("0*(\\d+)","$1"));
}
}
}
5、网页爬虫(蜘蛛)
import java.io.*;
import java.util.regex.*;
import java.net.*;
class RegexTest2
{
public static void main(String[] args) throws Exception
{
//getMails();
getMails_1();
}
//通过网页获取邮件地址
public static void getMails_1()throws Exception
{
URL url = newURL("http://127.0.0.1:8080/myweb/mail.html");
URLConnection conn =url.openConnection();
BufferedReader bufIn =
new BufferedReader(new InputStreamReader(conn.getInputStream()));
String line = null;
String mailreg ="\\w+@\\w+(\\.\\w+)+";
Pattern p = Pattern.compile(mailreg);
while((line=bufIn.readLine())!=null)
{
Matcherm = p.matcher(line);
while(m.find())
{
System.out.println(m.group());
}
}
}
//通过本地文件获取邮件地址
public static void getMails()throws Exception
{
BufferedReader bufr =
new BufferedReader(new FileReader("mail.txt"));
String line = null;
String mailreg ="\\w+@\\w+(\\.\\w+)+";
Pattern p = Pattern.compile(mailreg);
while((line=bufr.readLine())!=null)
{
Matcherm = p.matcher(line);
while(m.find())
{
System.out.println(m.group());
}
}
}
}