JAVA基础之正则表达式

JAVA基础之正则表达式

一.概述

    1.1 简述

         解释:正则表达式,又称正规表示法、常规表示法(英语:Regular Expression,在代码中常简写为regex、regexp或RE),计算机科学的一个概念。正则表达式使用单个字符串来描述、匹配一系列符合某个句法规则的字符串。在不少文本编辑器里,正则表达式一般被用来检索、替换那些符合某个模式的文本。 java

    1.2 规则详解

       规则:“^/规则/$”:^([]{})([]{})([]{})$
正则表达式

                i.“^“: 若是在开始则:表示从字符串开始匹配,不然表示相反编辑器

                ii.”$“: 匹配到字符串结束spa

                iii.“/“:两个//中间就是匹配规则code

                iv.”\“: 转义字符,将后面的字符表示为其它的含义。regexp

                            1)特殊字符 ip

                            2) 将特殊字符转化为字面意义ci

案例:
"\\":表示为 \ 字符
"\n": 表示换行(这是ascii吗里面的特殊字符
"\\n":表示为 \n 字符

                v. 字符:字符串

"a":表示字符a
"ab":表示字符 ab

                vi.[]和|:表示或,有一个匹配则成立。it

"a|bccd":将匹配accd和bccd
"[ab]ccd": 将匹配accd和bccd

                vii.():分组,一组字符串。在正常使用者方便将字符串分割匹配

(规则):获取规则匹配的字符串
(?=规则):匹配其后紧接着的字符串
(?!规则):匹配气候没有紧接着规则的字符串

                viii.限定符:表示个数

"{m,n}":表示m到n之间
"{m,}":至少有m个
"{m}":确认m个
"*":0个或多个,等价{0,}
"+":一个或多个,等价{1,}
"?":0个或1个,等价{0,1}

                ix.元字符(特殊字符):

"."	查找单个字符,除了换行和行结束符。
"\w"	查找单词字符。
"\W"	查找非单词字符。
"\d"	查找数字。
"\D"	查找非数字字符。
"\s"	查找空白字符。
"\S"	查找非空白字符。
"\b"	匹配单词边界。
"\B"	匹配非单词边界。
"\0"	查找 NUL 字符。
格式:
"\n"	查找换行符。
"\f"	查找换页符。
"\r"	查找回车符。
"\t"	查找制表符。
"\v"	查找垂直制表符。
其它
"\xxx"	查找以八进制数 xxx 规定的字符。
"\xdd"	查找以十六进制数 dd 规定的字符。
"\uxxxx"查找以十六进制数 xxxx 规定的 Unicode 字符


二.案例

    2.1 Java中的正则依赖的类

        java.util.regex.Pattern: 规则类,构成器私有。

        java.util.regex.Matcher: 匹配类,直接出结果。

        tips:经常使用的直接是String类的matches(String regular)

    2.2 使用

@Test
	public void createRegular() {
		// create pattern、matcher
		Pattern pattern = Pattern.compile("b*g");
		Matcher matcher = pattern.matcher("bg");
		System.out.println(matcher.matches()); // true
		// 直接封装了pattern和matcher
		System.out.println(pattern.matches("b*g", "bg"));
	}

	@Test
	public void commonRegular() {
		/**
		 * @see 表示或的时候都用[]
		 */
		System.out.println("abcdefg".matches("a|cbcdefg")); // false
		System.out.println("abcdefg".matches("abcdef|hg")); // false
		System.out.println("abcdefg".matches("abcde[f|h]g")); // true
	}
	
	@Test
	public void specialRegular() {
		/**
		 * @see java里面专业字符必须用\\,这个转化为/
		 */
		System.out.println("abcdefg".matches("\\w*")); // true
		// 将()转义为本来含义
		System.out.println("a(bcdef)g".matches("a\\([\\w]{5}\\)g")); // true
		// ()?表示:小括号中的字符串无关紧要
		System.out.println("abcdefg".matches("a([\\w]{5})?g")); // true
		System.out.println("ag".matches("a([\\w]{5})?g")); // true
	}
	
	
	@Test
	public void teleRegular() {
		/**
		 * @see 电话、更加详细的规则须要将其拆分更细
		 */
		System.out.println("18655592458".matches("1[\\d]{10}")); // true
		System.out.println("18655592458".matches("1[0-9]{10}")); // true
		System.out.println("1865cc92458".matches("1[\\d]{10}")); // false
	}
	
	@Test
	public void emailRegular() {
		/**
		 * @see 邮箱
		 */
		System.out.println("2888asdfa@sina.com".matches("[0-9a-zA-Z]+@([0-9a-zA-Z]+\\.)+[0-9a-zA-Z]+")); // true
	}
相关文章
相关标签/搜索