例子一:
package cn.itcast.gz.regexp;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Demo1
{
/**
* 1.匹配
* 2.分割
* 3.替换
* 4.获取
* @param args
*/
public static void main(String[] args)
{
//正则表达式的第一种作用:匹配
String username= "_aDfdsa123_1223";
String regex = "^[a-z_A-Z][A-Z_a-z0-9]*$";
boolean bo = username.matches(regex);
boolean bos = Pattern.matches(regex, username);
System.out.println(bos);
//切割
String users = "kendy889mechanical8931bother93289regexp88932jerry8890qeery";
String reg = "[0-9]+";
String[] ss = users.split(reg);
for(int i=0;i<ss.length;i++)
{
System.out.println(ss[i]);
}
//替换
String haha = "kendy889mechanical8931bother93289regexp88932jerry8890qeery";
String exp = "[0-9]+";
String newHaha = haha.replaceAll(exp, "_");
System.out.println(newHaha);
//获取
String str = "aaa88bbb889ccc896ddd98";
String regex2 = "[0-9]*";
Pattern pattern = Pattern.compile(regex2);
Matcher ma = pattern.matcher(str);
while(ma.find())
{
System.out.print(ma.group()+",");
}
}
}
例子二:
package cn.itcast.gz.regexp;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.URL;
import java.net.URLConnection;
import java.util.TreeSet;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Demo2
{
public static void main(String[] args) throws IOException
{
//myMatches();
//mySplit();
//replaceAllDemo();
//get();
//get1();
/**
* 作业练习1:将字符串"我..我....我..我我..我我.......要..要.要.要..要....学...学.学...学.编.编编程程程...程....程..程..程."
* 变成"我要学编程"
*/
//可以考虑用替换
String str = "我..我....我..我我..我我.......要..要.要.要..要....学...学.学...学.编.编编程程程...程....程..程..程.";
str = str.replaceAll("\\.", "");//把.替换成空字符串
str = str.replaceAll("(.)\\1+", "$1");//把重复的元素变成一个
System.out.println(str);
/**
* 作业练习2:将192.68.1.254 102.49.23.013 10.10.10.10 2.2.2.2 8.109.90.30
* 按照ip地址段位排序
*/
String str1 = "192.68.1.254 102.49.23.013 10.10.10.10 2.2.2.2 8.109.90.30";
//先把不足的0补全,因为10比2小,但ip中2比10小
str1 = str1.replaceAll("(\\d+)", "00$1");
str1 = str1.replaceAll("0*(\\d{3})", "$1");
System.out.println(str1);
String[] strs = str1.split(" ");
TreeSet<String> set = new TreeSet<String>();
for(String string : strs)
set.add(string);
/*Iterator<String> it = set.iterator();
while(it.hasNext())
{
System.out.println(it.next().replaceAll("0*(\\d+)", "$1"));
}*/
for(String s:set)
{
System.out.println(s.replaceAll("0*(\\d+)","$1"));
}
/**
* 作业练习3:对邮件地址进行校验
*
*/
String str2 = "76722951@qq.com.cn";
boolean bo = str2.matches("\\w{6,12}@[a-zA-Z0-9]+(\\.[a-zA-Z]+){1,2}");
System.out.println(bo);
/**
* 作业练习4:网页爬虫获取邮件地址
* 用获取
*/
/*BufferedReader br =new BufferedReader(new FileReader("f:\\test\\mail.txt"));
String line = null;
Pattern pat = Pattern.compile("\\w+@[a-zA-Z0-9]+(\\.[a-zA-Z]+){1,2}");
while((line=br.readLine())!=null)
{
Matcher mat = pat.matcher(line);
while(mat.find())
{
System.out.println(mat.group());
}
}*/
/**
* 获取网页中的网址
*/
URL url = new URL("http://home.baidu.com/contact.html");
URLConnection conn = url.openConnection();
BufferedReader br2 = new BufferedReader(new InputStreamReader(conn.getInputStream()));
String line2 = null;
Pattern pat2 = Pattern.compile("\\w+@[a-zA-Z0-9]+(\\.[a-zA-Z]+){1,2}");
while((line2=br2.readLine())!=null)
{
Matcher mat2 = pat2.matcher(line2);
while(mat2.find())
{
System.out.println(mat2.group());
}
}
myMatches();
}
private static void get1()
{
// 取单词
String str = "ming tian jiu yao fang jia le ,da jia";
String regExp = "\\b[a-z]{2}\\b"; //\b单词边界
Pattern pat = Pattern.compile(regExp);
Matcher mat = pat.matcher(str);
while(mat.find())
{
System.out.println(mat.group());
System.out.println(mat.start()+"——"+mat.end());
}
}
private static void get()
{
//获取匹配的字符串
String str = "aaa88bbb889ccc896ddd98";
String reg = "[a-z]+";
Pattern pat = Pattern.compile(reg);
Matcher mat = pat.matcher(str);
while(mat.find())
{
System.out.println(mat.group());
System.out.println(mat.start()+"——"+mat.end());
}
}
private static void replaceAllDemo()
{
//把数字变成一个#号
// String str = "wer78931232718you822299love738932me";
// String reg = "\\d{5,}"; //只要数字超过5个就替换成#号
String str = "wer7777777you888lovewwwwwwwmeyyyyysyou";
String reg = "(.)\\1+"; //将叠词替换成#号
String str2 = "#";
String str3 = "$1";//表示使用之前的第一个组,将叠词变成一个
String newStr = str.replaceAll(reg, str3);
newStr = newStr.replaceAll("\\d+", str2);
System.out.println(newStr);
}
private static void mySplit()
{
/**
* 2.切割:String对象的split();
*/
//按照.切割
//String str = "hekls.helkds.hfds";
//String exp ="\\.";
//按照\\切割
//String str = "c:\\hello\\bye\\yeah\\sorry";
//String exp = "\\\\";
//按照叠词切割
//String str = "kendyzzzbabazzzjolin";
//String exp = "zzz";
//按照不同的叠词切割
String str = "kendyzzzbabakkkjolin";
//可以把前面匹配过的词称为组,小括号()称为组
String exp = "(.)\\1+";
String[] strs = str.split(exp);
for(String s:strs)
{
System.out.println(s);
}
}
private static void myMatches()
{
/**
* 1.匹配:String对象的matches()方法
*/
String qq = "767527675s276752";
String regExp = "^[1-9][0-9]{4,14}";
boolean bo = qq.matches(regExp);
System.out.println(qq+"qq号"+bo);
String phone = "13s751789487";
String exp = "^1[358]\\d{9}";
boolean bo2 = phone.matches(exp);
System.out.println("手机号:"+phone+bo2);
}
}