java正则表达式

Posted 懒企鹅

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java正则表达式相关的知识,希望对你有一定的参考价值。

1、	字符:匹配单个字符
	· a:表示匹配字母a;
	· \\:匹配转义字符“\”;
	· \t:匹配转义字符“\t”;
	· \n:匹配转义字符“\n”;
2、	一组字符:任意匹配里面的一个单个字符;
	· [abc]:表示可能是字母a,可能是字母b或者是字母c;
	· [^abc]:表示不是字母a、字母b、字母c的任意一个;
	· [a-zA-Z]:表示全部字母中的任意一个;
	· [0-9]:表示全部数字的任意一个;
3、	边界匹配:在以后编写javascript的时候使用正则中要使用到;
	· ^:表示一组正则的开始;
	· $:表示一组正则的结束;
4、	简写表达式:每一位出现的简写标记也只表示一位;
	· .:表示任意的一位字符;
	· \d:表示任意的一位数字,等价于“[0-9]”;
	· \D:表示任意的一位非数字,等价于“[^0-9]”;
	· \w:表示任意的一位字母、数字、_,等价于“[a-zA-Z0-9_]”;
	· \W:表示任意的一位非字母、数字、_,等价于“[^a-zA-Z0-9_]”;
	· \s:表示任意的一位空格,例如:\n、\t等;
	· \S:表示任意的一位非空格;
5、	数量表示:之前的所有正则都只是表示一位,如果要想表示多位,则就需要数量表示。
	· 正则表达式?:此正则出现0次或1次;
	· 正则表达式*:此正则出现0次、1次或多次;
	· 正则表达式+:此正则出现1次或多次;
	· 正则表达式{n}:此正则出现正好n次;
	· 正则表达式{n,}:此正则出现n次以上;
	· 正则表达式{n,m}:此正则出现n ~ m次。
6、	逻辑表示:与、或、非
	· 正则表达式A正则表达式B:表达式A之后紧跟着表达式B;
	· 正则表达式A|正则表达式B:表示表达式A或者是表达式B,二者任选一个出现;
	· (正则表达式):将多个子表达式合成一个表示,作为一组出现。

3.11.3String类对正则的支持

在JDK 1.4之后,String类对正则有了直接的方法支持,只需要通过如下的几个方法就可以操作正则。

No. 

方法名称

类型

描述

public boolean matches(String regex) 

普通

与指定正则匹配

public String replaceAll(String regex, String replacement) 

普通

替换满足指定正则的全部内容

public String replaceFirst(String regex, String replacement) 

普通

替换满足指定正则的首个内容

public String[] split(String regex) 

普通

按照指定正则全拆分

public String[] split(String regex, int limit) 

普通

按照指定的正则拆分为指定个数

Pattern类之中存在的方法:

· 字符串全拆分:public String[] split(CharSequence input);

· 字符串部分拆分:public String[] split(CharSequence input, int limit);

Matterh类之中存在的方法:

· 字符串匹配:public boolean matches();

· 字符串全替换:public String replaceAll(String replacement);

· 字符串替换首个:public String replaceFirst(String replacement)。

正是因为String类支持的方法比较全面,所以在开发之中,主要的都是String类操作正则,因为方便。下面编写若干个操作实例来进行正则的验证。

范例:字符串拆分

package cn.mldn.demo;

public class TestDemo {

public static void main(String[] args) throws Exception {

String str = "a1bb2ccc3dddd4eeeee5fffffff6ggggggg7" ;

String regex = "[a-zA-Z]+" ;// 字母出现1次或多次

System.out.println(str.replaceAll(regex, ""));

System.out.println(str.replaceFirst(regex, ""));

}

}

 

范例:字符串拆分

package cn.mldn.demo;

public class TestDemo {

public static void main(String[] args) throws Exception {

String str = "a1bb2ccc3dddd4eeeee5fffffff6ggggggg7" ;

String regex = "\\d" ;// 数字出现1次,[0-9]

String result [] = str.split(regex) ;

for (int x = 0; x < result.length; x++) {

System.out.print(result[x] + "、");

}

}

}

 

有了正则,对于字符串日后的种种操作就会变的相当的方便。而正则在使用的过程之中最为重要的部分就是验证部分,因为一些字符串必须满足于指定的格式才可以操作。

范例:现在编写一个正则表达式要求验证电话号码是否正确,例如:现在写上咱们电话号码,有如下几种写法:

· 写法一:51283346  \\d{7,8};

· 写法二:01051283346  (\\d{3,4})?\\d{7,8};

· 写法三:010-51283346  (\\d{3,4})?-?\\d{7,8};

· 写法四:(010)-51283346  ((\\d{3,4}|\\(\\d{3,4}\\))-?)?\\d{7,8};

· 写法五:(010)51283346  ((\\d{3,4}|\\(\\d{3,4}\\))-?)?\\d{7,8}。

package cn.mldn.demo;

public class TestDemo {

public static void main(String[] args) throws Exception {

String str = "51283346";

// 第一步:\\d{7,8},因为电话号码可能是7~8位所组成;

// 第二步:(\\d{3,4})?\\d{7,8},因为区号由3~4位所组成;

// 第三步:(\\d{3,4})?-?\\d{7,8},因为-可能出现也可能不出现

// 第四步:((\\d{3,4}|\\(\\d{3,4}\\))-?)?\\d{7,8}

String regex = "((\\d{3,4}|\\(\\d{3,4}\\))-?)?\\d{7,8}";

if (str.matches(regex)) { // 符合于验证要求

System.out.println("TRUE,电话号码输入合法。");

} else {

System.out.println("FLASE,电话号码输入非法!");

}

}

}

 

范例:现在要求验证一个email地址,email地址的用户名由字母、数字、_、.所组成,其中不能以数字和.开头,而且email地址的域名只能是.com、.cn、.net 

package cn.mldn.demo;

public class TestDemo {

public static void main(String[] args) throws Exception {

String str = "[email protected]";

String regex = "[a-zA-Z_][a-zA-Z_0-9\\.]*@[a-zA-Z_0-9\\.]+\\.(com|cn|net)";

if (str.matches(regex)) { // 符合于验证要求

System.out.println("TRUE,EMAIL输入合法。");

} else {

System.out.println("FLASE,EMAIL输入非法!");

}

}

}

 以上内容摘抄自李兴华java8笔记

 

以上是关于java正则表达式的主要内容,如果未能解决你的问题,请参考以下文章

java 字符串替换

text 正则表达式片段

markdown 正则表达式模式片段

正则表达式匹配特定的 URL 片段而不是所有其他 URL 可能性

java正则表达式去除html标签

循环通过 python 正则表达式匹配