JavaSE基础正则表达式

正则表达式常用的语法

A:字符

字符 x :任意的字符
\\反斜线字符  在代码中书写正则表达式:\------>用两个\\代表一个反斜线
\t制表符 ('\u0009')
\n 新行(换行)符 ('\u000A')   IO流中要写入换行符号:windows "\r\n"
\r 回车符 ('\u000D') 

B:字符类

[abc] a、b 或 c(简单类)
[^abc] 任何字符,除了 a、b 或 c(否定) 
[a-zA-Z]a 到 z 或 A 到 Z,两头的字母包括在内(范围) 当前字母大小均可

C:预定义字符类

 任何字符邮箱里面:如果本身就是.,那么在写正在表达式的时候,\.将当前.转义
\d 数字:[0-9] \d在正则表达式应用的时候:[0-9]--->\\d
\w单词字符:[a-zA-Z_0-9]:简单一些字符串,单词字符(规则:数字或者字母) javascript:[a-zA-Z0-9]
        
D:边界匹配器

行的开头 
$行的结尾
\b单词边界 :   hello;world:haha:xixi   

E:Greedy 数量词

X?X,一次或一次也没有 
X*X,零次或多次
X+ X,一次或多次
X{n} X,恰好 n 次
X{n,}X,至少 n 次
X{n,m}X,至少 n 次,但是不超过 m 次
                      

/**
 * 
 */
package org.zst.regex;
import java.util.*;
/**邮箱校验
 * @author:zsyht
 * @date:2017-11-9上午9:08:01
 */
public class Demo {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		System.out.print("请输入一个邮箱地址:");
		String  email = sc.nextLine();
		
		//定义正则规则
		String regex ="[a-zA-Z_0-9]+@[a-zA-Z_0-9]{2,8}(\\.[a-zA-Z]{2,3})+";
		boolean flag = email.matches(regex);
		System.out.println("校验结果:"+flag);
	}
}


String的分割功能

 public String[] split(String regex):给定正则表达式的匹配拆分此字符串,返回值类型是一个字符串数组类型

/**
 * 
 */
package org.zst.regex;
import java.util.Scanner;

/**
 * @author:zsyht
 * @date:2017-11-9上午10:17:41
 */
public class Demo2 {
	public static void main(String[] args) {
		// 定义一个字符串
		String ages = "18-22";
		// 定义正则规则
		String regex = "-";
		//返回字符串数组
		String[] strArray = ages.split(regex);
		// 如何得到当前字符数组中的元素(转换int类型的数据)
		int startAge = Integer.parseInt(strArray[0]);
		int endAge = Integer.parseInt(strArray[1]);

		// 键盘录入一个年龄,属于int类型的数据
		Scanner sc = new Scanner(System.in);
		System.out.print("请您输入一个年龄:");
		int age = sc.nextInt();

		// 判断是否符合要求
		if (age >= startAge && age <= endAge) {
			System.out.println("年龄符合");
		} else {
			System.out.println("年龄不符合");
		}
	}
}

/**
 * 
 */
package org.zst.regex;

/**
 * @author:zsyht
 * @date:2017-11-9上午10:31:01
 */
public class Demo3 {
	public static void main(String[] args) {
		String str1 = "aa,bb,cc" ;
		//使用分割功能
		String[] strArray1 = str1.split(",") ;
		//遍历字符串数组
		for(int x = 0 ; x < strArray1.length; x ++){
			System.out.print(strArray1[x]+" ");
		}
		System.out.println();
	
		String str2 = "aa       bb                    cc" ;
		//使用切割功能:
		String[] strArray2 = str2.split(" +") ; //空格拼接+,表示空格多次出现
		for(int x = 0 ; x <strArray2.length ; x++){
			System.out.print(strArray2[x]+" ");
		}
		System.out.println();
	
		String str3 = "aa.bb.cc" ;
		//分割功能
		String[] strArray3 = str3.split("\\.") ;
		for(int x =0 ; x<strArray3.length ; x ++){
			System.out.print(strArray3[x]+" ");
			
		}
		System.out.println();

		//硬盘上的路径表现形式:用两个反斜线代表一个反斜线
		//D:\360驱动大师目录
		String str4 = "D:\\360驱动大师目录" ;
		//使用分割功能
		String[] strArray4 = str4.split("\\\\") ;
		for(int x = 0 ; x <strArray4.length ; x ++){
			System.out.print(strArray4[x]+" ");
		}
	}
}

关于模式和匹配器的使用:关于模式和匹配器的使用:获取功能

  模式和匹配器基本使用顺序

/**
 * 
 */
package org.zst.regex;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 * @author:zsyht
 * @date:2017-11-9上午10:51:46
 */
public class Demo4 {
	public static void main(String[] args) {
		//public static Pattern compile(String regex)将给定的正则表达式编译成一个模式对象
		//1)获取模式对象(通过正则规则)
		Pattern p = Pattern.compile("a*b") ;
		//2)通过模式获取匹配器对象,(将一个字符串类型的数据)
		Matcher m = p.matcher("aaaaaab") ;
		//3)调用Match(匹配器类)中的:public boolean matches():判断当前用户录入的字符串是否和当前的正则规则匹配
		boolean flag = m.matches() ;
		System.out.println("flag:"+flag);
		
		System.out.println("----------------------------");
		
		//上述写法麻烦,要获取模式对象Pattern还要获取匹配器对象:Matcher,然后通过matches()方法返回一个结果	
		//定义一个正则规则
		String regex = "a*b" ;
		//指定某一个字符串
		String str = "aaaaaaab" ;
		//使用当前给定的字符串调用public boolean matchers(String regex)
		boolean flag2 = str.matches(regex) ;
		System.out.println("flag2: "+flag2);
	}
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值