Java 正则表达式

前言:跟着偶操作,一篇文章带你练熟正则表达式。
原文出处:http://blog.csdn.net/u014158743/article/details/52939607

这里有一篇讲语法的,可以看看,更值得一提的是不得不说这个网站很清晰,很适合入门。
http://www.runoob.com/java/java-regular-expressions.html
###Demo1.java

public class Demo1 {

	/**
	 * 正则表达式:专门针对字符串的
	 */
	public static void main(String[] args) {
		
		String qq = "32398485794";
		//boolean boo = checkQQ(qq);
		//System.out.println(boo);
		
		String regex = "[1-9]\\d{4,14}";//验证 qq号的正则表达式
		boolean  b = qq.matches(regex);
		System.out.println(b);

	}
	
	//判断qq号是否正确,5--15,不能以0开头,必须全是数字
	public static  boolean checkQQ(String qq) {
		int len = qq.length();
		if(len>=5 && len<=15) {
			if(!qq.startsWith("0")) {
				try {
					  long num = Long.parseLong(qq);
					  return true;
				}catch(NumberFormatException e) {
					e.printStackTrace();
				}
			} else
				System.out.println(qq+"号以0开头了");
		} else
			System.out.println(qq+"号的长度不合法");
		
		return false;
	}

}

###Demo2.java

public class Demo2 {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		
		String ss = "booooooook";
		String regex = "bo+k";
		boolean boo = ss.matches(regex);
		System.out.println(boo);
	}

}

###Demo3.java

public class Demo3 {

	/**
	 * 正则表达式针对字符串的常用操作: 
	 * 1:匹配: 实际用的是String类中的 boolean matches(String regex)方法
	 * 2:切割: 实际用的是 String类中的 Sring[] split(String regex) 
	 * 3:替换: 实际使用的是 String replaceAll(String regex, String replacement) 
	 * 4:获取:
	 *  Pattern:把字符串形式的正则表达式编译成Pattern类型的对象
	 *  Matcher:从指定的字符串中查找符合正则规则的内容
	 */
	public static void main(String[] args) {

		// piPei();
		// qieGe();

		// tiHuan();

		huoQu();
	}

	// 获取
	public static void huoQu() {
		String ss = "zhu yi la,ming tian fang jia.";
		String regex = "[a-z]{4}";

		// 把字符串形式的正则表达式编译成Pattern类型的对象
		// Pattern类型的对象不具备从字符串中获取内容的功能
		Pattern pattern = Pattern.compile(regex);

		// Matcher具备从字符串中获取内容的功能
		// 从字符串ss中或取符合pattern规则的内容
		Matcher matcher = pattern.matcher(ss);

		while (matcher.find()) {
			System.out.println(matcher.group());
		}
	}

	// 替换
	public static void tiHuan() {
		// String ss = "lisi****zhangsan&&&&&wangwu##########liunengaa";
		// String regex = "(.)\\1+";
		// ss = ss.replaceAll(regex, "$1");

		// String ss =
		// "woieurowie2983748934789lskdjflsk039485094lksdjflk338949";
		// String regex = "\\d{8,}";
		// ss = ss.replaceAll(regex, "****");

		String ss = "13545127892";
		String regex = "(\\d{3})\\d{4}(\\d{4})";
		ss = ss.replaceAll(regex, "$1****$2");

		System.out.println(ss);
	}

	public static void qieGe() {
		// String ss = "lisi.zhangsan.wangwu.liuneng";
		// String regex = "\\.";

		// String ss = "lisi   zhangsan wangwu      liuneng";
		// String regex = " +";

		String ss = "lisi****zhangsan&&&&&wangwu##########liunengaa";
		String regex = "(.)\\1+";

		String[] arr = ss.split(regex);
		for (String str : arr) {
			System.out.println(str);
		}
	}

	// 匹配
	public static void piPei() {
		String tel = "18623568912";
		String regex = "1[3578]\\d{9}";

		boolean boo = tel.matches(regex);
		System.out.println(boo);
	}

}

###Demo4.java

public class Demo4 {

	/**
	 * 
	 * 练习1:我我..我我..我.我要...要要...要要...要学学....学学学...编编...编编..编程...程程...程程..程.程
	 * 要求,转成:我要学编程。
	 */
	public static void main(String[] args) {
		String ss = "我我..我我..我.我要...要要...要要...要学学....学学学...编编...编编..编程...程程...程程..程.程";
		
		ss = ss.replaceAll("\\.+", "");
		System.out.println(ss);
		
		ss = ss.replaceAll("(.)\\1+", "$1");
		System.out.println(ss);
		
		
	}

}

###Demo5.java

public class Demo5 {

	/**
	 * 练习2:对ip地址按照数值顺序排序。
	 * 192.168.001.200  010.010.010.010  004.004.004.004 127.000.000.001
	 */
	public static void main(String[] args) {
		
		String ss = "192.168.1.200  10.10.10.10  4.4.4.4 127.0.0.1";
		
		//在每个地址前补两个0
		ss = ss.replaceAll("(\\d{1,3})", "00$1");
		System.out.println(ss);
		
		//每个地址值只保留后三位
		ss = ss.replaceAll("0*(\\d{3})", "$1");
		System.out.println(ss);
		
		String[] arr = ss.split(" +");
		Arrays.sort(arr);
		
		for(String str:arr) {
			System.out.println(str.replaceAll("0*(\\d{1,3})", "$1"));
		}
         
	}

}

###Demo6.java

public class Demo6 {

	/**
	 * 练习3:对邮件地址进行匹配。
	 */
	public static void main(String[] args) {
		
		String email = "abc@sina.com.cn";
		
		//String regex = "[a-zA-Z_0-9]+@[a-zA-Z0-9]+(\\.[a-zA-Z]+){1,2}";
		
		String regex = "\\w+@\\w+(\\.\\w+)+";
		
		boolean boo = email.matches(regex);
		System.out.println(boo);
	}

}

###Demo7.java

public class Demo7 {

	/**
	 * 练习4:实现网页爬虫
	 */
	public static void main(String[] args) throws IOException {
		
		//getEmails();
		
		getEmail();

	}
	//从网络上的html文件中获取邮箱
	public static void getEmail() throws IOException {
		String path = "http://localhost:8080/myweb/mail.html";
		
		URL url = new URL(path);
		
		URLConnection conn = url.openConnection();
		InputStream in = conn.getInputStream();
		BufferedReader br = new BufferedReader(new InputStreamReader(in));
		
		String regex = "\\w+@\\w+(\\.\\w+)+";
		Pattern pattern = Pattern.compile(regex);
		
		String line = null;
		while((line = br.readLine())!=null) {
			Matcher m = pattern.matcher(line);
			while(m.find()) {
				System.out.println(m.group());
			}
		}

	}
		
	//从本地文件中获取邮箱
	public static void getEmails() throws IOException {
		BufferedReader br = new BufferedReader(new FileReader("fiile\\mail.html"));
		
		String regex = "\\w+@\\w+(\\.\\w+)+";
		Pattern pattern = Pattern.compile(regex);
		
		String line = null;
		while((line =br.readLine())!=null) {
			Matcher m = pattern.matcher(line);
			while(m.find()) {
				System.out.println(m.group());
			}
		}
	}

}

本系列文章

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

IT小瓯

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值