二十二、正则表达式

正则表达式

      正则表达式(regex)又称规则表达式正则表达式通常被用来检索、替换那些符合某个模式(规则)的文本。,java在JDK 1.4 版本后开始支持正则表达式,同时给出了java.util.regex开发包,包下有两个操作类:pattern、Matcher,但在一般开发过程中,我们很少直接使用这两个类。在JDK 1.4后,String类型也增加了有关正则的操作方法,我们一般都是用String类型来操作正则表达式


String类型正则表达式

public boolean matches(String regex)                                   将字符串与给定的正则(regex)进行匹配验证

public String replaceAll(String regex,String replacement)     按照规定的正则(regex)将字符串(replacement)全部替换

public String replaceFirst(String regex,String replacement)  按照规定的正则(regex)将字符串(replacement)出现的首个替换

public String[] split(String regex)                                           按照正则(regex)将指定的字符串拆分          

public String[] split(String regex,int limit)                               按照正则拆分成字符串数组 ,数组长度为limit




正则标记

(1)一般表达式

扫描二维码关注公众号,回复: 1112694 查看本文章

[a-z]                         表示任意一个小写字母
[A-Z]                        表示任意一个大写字母
[a-zA-Z]                   表示任意一个字母
[0-9]                         表示任意一个数字
[0-9a-z]                    表示任意一个数字或小写字母


"^"相当于java中的"!"

[^a-z]                         表示除小写字母以外任意一个字符
[^A-Z]                        表示除大写字母以外任意一个字符
[^a-zA-Z]                   表示除字符以外的任意一个字符
[^0-9]                         表示除数字以外的任意一个字符
[^0-9a-z]                    表示除数字和小写字母以外的任意一个字符


(2)简写表达式(java)

//                             反斜杠
//d                           数字等价于[0-9]
//D                           非数字 等价于[^0-9]
//s                            空白符号 [/t/n/x0B/f/r]
//S                           非空白符号 [^/t/n/x0B/f/r]
//w                            单独字符 [a-zA-Z_0-9]
//W                           非单独字符 [^a-zA-Z_0-9]



上述的一般表达式和简介表达式都是表示出现一次,如果想控制出现的字数,就需要加上数量表达式,组合控制

(3)数量表达式

?:                表示0或者1次
*:                表示0次或者多次  
+:               表示1次以上  
{n}:              表示出现n次
{n,}                出现n次以上
{n,m}             出现n~m次




正则实例

1. replaceFirst(String regex,String replacement)  、replaceAll(String regex,String replacement) 替换字符

代码演示:

package demo;

public class RegCase {
    public static void main(String[] args) {
        //将符合正则表达式的用字符串替换
        String info = "a89565b111c22d54546556123e465465165f";
        String regex = "[\\d]+";
        //将字符串中满足正则表达式的字符全部替换为空
        String result1 = info.replaceAll(regex, "");
        //将字符串中首次满足正则表达式的字符替换为空
        String result2 = info.replaceFirst(regex, "");
        System.out.println(result1);
        System.out.println(result2);
    }
}

代码结果:

abcdef
ab111c22d54546556123e465465165f


2.split(String regex)、split(String regex,int limit) 将字符串按正则截取

代码演示:

package lesson0924;

import java.util.Arrays;

public class RegCase {
	public static void main(String[] args) {
		//字符串拆分
		String str = "abc123def456hij789dsada456dasda789ds";
		//使用数字作为拆分符号,将上面的字符串拆分成字符串数组
		String reg = "[\\d]+";
		String[] arr1 = str.split(reg);
		String[] arr2 = str.split(reg,2);
		System.out.println(Arrays.toString(arr1));
		System.out.println(Arrays.toString(arr2));
	}
}

代码结果:

[abc, def, hij, dsada, dasda, ds]
6
[abc, def456hij789dsada456dasda789ds]
2



3.matches(String regex)  验证邮箱格式

代码演示:

package demo;

import java.util.Scanner;

public class RegCase {
	public static void main(String[] args) {
		/*
		 * 邮箱例子:		[email protected]
		 * 				[email protected]
		 * 				[email protected]
		 * 				[email protected]
		 * 				[email protected]
		 */
		//编写邮箱验证正则表达式
		String reg = "([\\w]{6,15})@([\\w&&[^_]]{2,6})(.com|.cn|.com.cn)";		
		Scanner sc = new Scanner(System.in);
		String info = sc.next();
		//matches用来判断字符串是否匹配正则表达式
		if(info.matches(reg)){
			System.out.println("邮箱格式匹配");
		}else{
			System.out.println("邮箱格式不匹配");
		}
		sc.close();
	}
}

代码演示:

[email protected]
邮箱格式匹配


补充:

"(  )"表示一组正则成员

多个正则条件需要同时满足可以使用"&&"

多个正则条件满足一个即可可以使用"|"



                                       

猜你喜欢

转载自blog.csdn.net/qq_38741971/article/details/80199254
今日推荐