<返回更多

Java正则表达式详解

2020-08-11    
加入收藏

概述

正则表达式非常强大,能够解决我们开发时用于匹配一些特定的要求。并且JAVA中还提供了相当强大的方法,扩展其功能性。下面我们就来介绍一下:

1.定义一个关于用户名的正则表达式

String regex = "[\u4E00-\u9FEF[a-z][A-Z]{2}]\w{6,20}";

2.定义一个关于密码的正则表达式

String password = "[\w\.]{6,16}";

3. 定义一个关于QQ邮箱的正则表达式

String email = "[\d@qq\.com]{12,16}";

4.两个用来处理正则表达式的工具类

compile是静态方法,用于编译规则返回Pattern对象

matcher用于匹配字符串

Pattern p = Pattern.compile(regex);

Matcher m = p.matcher(str);

5.find():判断字符串是否匹配

6.group():将匹配到的字符串分组

7.start()和end():分别表示第几轮匹配到的字符串的下标,end()下标自动加1

8.AppendReplacement():用特定的字符串替代匹配到的字符串,并放入其第一个参数 StringBuffer中

9.appendTail():将最后匹配到的字符串的剩余串放入StringBuffer中

应用

Java正则表达式详解

 


Java正则表达式详解

 


Java正则表达式详解

 

package com.bbc.regex;

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

public class RegexDemo {

	// 定义一个全局变量用于计数
	static int count = 0;
	
	// 定义一个全局变量用于替代
	static String replaceStr = "-";
	

	public static void main(String[] args) {

		// 定义一个关于用户名的正则表达式
		String regex = "[\u4E00-\u9FEF[a-z][A-Z]{2}]\w{6,20}";
		// 定义匹配的子段
		String str = "吴dadadadda31da";

		// 定义一个关于密码的正则表达式
		String password = "[\w\.]{6,16}";

		// 定义匹配的字段
		String passwordStr = "dafa........";

		// 定义一个关于QQ邮箱的正则表达式
		String email = "[\d@qq\.com]{12,16}";

		// 定义匹配的字段
		String emailStr = "146456416@qq.com";
		
		// 定义一个字段用于测试find方法
		String line = "454156135dada 	...";
		String pattern = "(\d+)([a-z]+)(\s)(.*)";

		//定义一个字段用于测试start_end方法
		String test = "abc\b";
		String testStr = "abc dada abc dad abc ad";
		

		// 定义一个字段用于测试replace方法
		String replace = "a*b";
		
		// 定义一个匹配的字段
		String replaceStr1 = "aabdadasabdadabbadadaabda";
		
		
		
		System.out.println("用户名:" + judge(regex, str));
		System.out.println("密    码:" + judge(password, passwordStr));
		System.out.println("邮    箱:" + judge(email, emailStr));
		find(pattern, line);
		start_end(test, testStr);
		replace(replace,replaceStr1);
	}

	// 定义一个方法,判断字符串是否合法
	public static boolean judge(String regex, String str) {

		Pattern p = Pattern.compile(regex);

		Matcher m = p.matcher(str);

		return m.matches();
	}

	// 定义一个方法,获取字符串的分割点
	public static void find(String regex, String str) {
		Pattern p = Pattern.compile(regex);
		Matcher m = p.matcher(str);
		if (m.find()) {
			System.out.println("value1" + ":" + m.group(0));
			System.out.println("value2" + ":" + m.group(1));
			System.out.println("value3" + ":" + m.group(2));
			System.out.println("value4" + ":" + m.group(3));
			System.out.println("value5" + ":" + m.group(4));
		}
	}
	
	// 定义一个方法,获取每个分割点的坐标
	public static void start_end(String regex , String str){
		Pattern p = Pattern.compile(regex);
		Matcher m = p.matcher(str);
		while(m.find()){
			count++;
			System.out.println("第"+ count +"次循环");
			System.out.println("start:" + m.start());
			System.out.println("end:" + m.end());
		}
	}
	
	// 定义一个方法,用特定的字段取代匹配的字段
	public static void replace(String regex , String str){
		Pattern p = Pattern.compile(regex);
		Matcher m = p.matcher(str);
		StringBuffer sb = new StringBuffer(); 
		while(m.find()){
			m.appendReplacement(sb, replaceStr);
		}
		m.appendTail(sb);
		System.out.println("sb:" + sb);
	}
}

演示

Java正则表达式详解

 

本期内容到此结束,我们下期不见不散!

声明:本站部分内容来自互联网,如有版权侵犯或其他问题请与我们联系,我们将立即删除或处理。
▍相关推荐
更多资讯 >>>