Java 正则表达式

大概是迄今为止遇到的Java相关知识里面最繁琐的部分了orz

具体内容还是去查Pattern的API文档吧

import java.util.regex.Matcher;
import java.util.regex.Pattern;

/** 
* @author Leon
* @date 创建时间:2017年11月16日 下午2:31:56
* @version 1.0
* 类说明 :正则表达式
* 		详情可以查看java.util.regex.Pattern的api文档
*/
public class Test
{
	public static void p(Object o)
	{
		System.out.println(o);
	}

	public static void main(String[] args)
	{
//		// 正则表达式简单概念
//		p("abc".matches("..."));
//
//		// \d表示一位数字
//		p("a656526a31".replaceAll("\\d", "-"));
//
//		// Pattern类 编译a到z三个字母
//		Pattern p = Pattern.compile("[a-z]{3}");// 提前编译,提升速度
//		Matcher m = p.matcher("fgh");// 内部创建一个自动机,匹配结果保留在Matcher对象里面
//		p(m.matches());
//		// 以上三行相当于
//		p("fgh".matches("[a-z]{3}"));
//
//		// 初步认识 . * + ?
//		p("a".matches("."));
//		p("aa".matches("aa"));
//		p("aaaa".matches("a*"));
//		p("aaaa".matches("a+"));
//		p("".matches("a*"));
//		p("aaaa".matches("a?"));
//		p("".matches("a*"));
//		p("45446".matches("\\d{3,100}"));
//		p("192.168.0.aaa".matches("\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}"));
//		p("192".matches("[0-2][0-9][0-9]"));
//
//		// 范围
//		p("a".matches("[abc]"));
//		p("a".matches("[^abc]"));// 取反
//		p("A".matches("[a-zA-Z]"));// -表示范围
//		p("A".matches("[a-z]|[A-Z]"));// 同上 |表示或者
//		p("A".matches("[a-z[A-Z]]"));// 同上
//		p("A".matches("[a-z&&[RFG]]"));// &&并且
//
//		// 认识 \s \w \d \
//		p(" \n\r\t".matches("\\s{4}"));
//		p(" ".matches("\\S"));
//		p("a_8".matches("\\w{3}"));
//		p("abc123&^%".matches("[a-z]{1,3}\\d+[&^%#]+"));
//		p("\\".matches("\\\\"));
//
//		// POSIX Style
//		p("a".matches("\\p{Lower}"));
//
//		// boundary
//		p("hello sir".matches("^h.*"));// ^在中括号外面代表一行的起始位置
//		p("hello sir".matches(".*ir$"));// $:以某某结尾
//		p("hello sir".matches("^h[a-z]{1,3}o\\b.*"));
//		p("hellosir".matches("^h[a-z]{1,3}o\\b.*"));
//
//		// white lines:空白行
//		p(" \n".matches("^[\\s&&[^\\n]]*\\n$"));
//
//		// 练习
//		p("aaa 8888c".matches(".*\\d{4}."));
//		p("aaa 8888c".matches(".*\\b\\d{4}."));
//		p("aaa8888c".matches(".*\\d{4}."));
//		p("aaa8888c".matches(".*\\b\\d{4}."));
//
//		//email
//		p("asdfasdfsafsf@dsdfsdf.com".matches("[\\w[.-]]+@[\\w[.-]]+\\.[\\w]+"));

//		//matches find lookingAt
//		Pattern p = Pattern.compile("\\d{3,5}");
//		String s = "123-34345-234-00";
//		Matcher m = p.matcher(s);
//		p(m.matches());//会影响find(),需要加reset()
//		m.reset();
//		p(m.find());//find()找子串
//		p(m.start() + "-" + m.end());
//		p(m.find());
//		p(m.start() + "-" + m.end());
//		p(m.find());
//		p(m.start() + "-" + m.end());
//		p(m.find());
//		//p(m.start() + "-" + m.end());
//		
//		p(m.lookingAt());//每次从头开始找
//		p(m.lookingAt());
//		p(m.lookingAt());
//		p(m.lookingAt());

//		// replacement
//		Pattern p = Pattern.compile("java", Pattern.CASE_INSENSITIVE);//大小写不敏感
//		Matcher m = p.matcher("java Java JAVa JaVa IloveJAVA you hateJava afasdfasdf");
//		StringBuffer buf = new StringBuffer();
//		int i = 0;
//		while (m.find())
//		{
//			i++;
//			if (i % 2 == 0)
//			{
//				m.appendReplacement(buf, "java");
//			}
//			else
//			{
//				m.appendReplacement(buf, "JAVA");
//			}
//		}
//		m.appendTail(buf);
//		p(buf);

//		// group 分组
//		Pattern p = Pattern.compile("(\\d{3,5})([a-z]{2})");
//		String s = "123aa-34345bb-234cc-00";
//		Matcher m = p.matcher(s);
//		while (m.find())
//		{
//			p(m.group(1));//打印出来匹配到的子串 1:第一组   2:第二组
//		}

//		//quantifiers修饰词
//		Pattern p = Pattern.compile("(.{3,10}+)[0-9]");//possessive quantifiers
//		//Pattern p = Pattern.compile("(.{3,10})[0-9]");//greedy quantifiers
//		//Pattern p = Pattern.compile("(.{3,10}?)[0-9]");//reluctant quantifiers
//		String s = "aaaa5bbbb68";
//		Matcher m = p.matcher(s);
//		if (m.find())
//			p(m.start() + "-" + m.end());
//		else
//			p("not match!");

//		// non-capturing groups非捕获组
//		Pattern p = Pattern.compile(".{3}(?=a)");
//		//Pattern p = Pattern.compile("(?=a).{3}");
//		String s = "444a66b";
//		Matcher m = p.matcher(s);
//		while (m.find())
//		{
//			p(m.group());
//		}

		// back refenrences向前引用
		Pattern p = Pattern.compile("(\\d(\\d))\\2");
		String s = "122";
		Matcher m = p.matcher(s);
		p(m.matches());

//		// flags的简写
//		// Pattern p = Pattern.compile("java", Pattern.CASE_INSENSITIVE);
//		p("Java".matches("(?i)(java)"));
	}
}


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值