java_正则表达式

来源:互联网 发布:resttemplate json 编辑:程序博客网 时间:2024/06/03 20:44

例子一:

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);
  
 }
 
 
}

 

原创粉丝点击