正则表达式

package 正则表达式;

import java.util.Arrays;
import java.util.StringTokenizer;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/*字符的取值范围
1.[abc] : 表示可能是a,可能是b,也可能是c。
2.[^abc]: 表示不是a,b,c中的任意一个
3.[a-zA-Z]: 表示是英文字母
4.[0-9]:表示是数字
5.[a-e[p]]:并集
6.[a-e&&[b-c]]:交集

简洁的字符表示
.:匹配任意的字符
\d:表示数字
\D:表示非数字
\s:表示由空字符组成,[ \t\n\r\x\f]
\S:表示由非空字符组成,[^\s]
\w:表示字母、数字、下划线,[a-zA-Z0-9_]
\W:表示不是由字母、数字、下划线组成

数量表达式
1.?: 表示出现0次或1次
2.+: 表示出现1次或多次
3.*: 表示出现0次、1次或多次
4.{n}:表示出现n次
5.{n,m}:表示出现n~m次
6.{n,}:表示出现n次或n次以上

逻辑表达式
1.XY: 表示X后面跟着Y,这里X和Y分别是正则表达式的一部分
2.X|Y:表示X或Y,比如"food|f"匹配的是foo(d或f),而"(food)|f"匹配的是food或f
3.(X):子表达式,将X看做是一个整体
*/
public class zhenze {

	public static void main(String[] args) {
		// TODO 自动生成的方法存根
		Pattern p=Pattern.compile("a*b");
		Matcher m=p.matcher("aaaab");
		boolean b=m.matches();
		System.out.println(b);
		System.out.println("aaab".matches("a*b"));
		System.out.println("b".matches("[^ac]"));
		System.out.println("a".matches("[a-e[f]]"));
		System.out.println(".".matches("\\."));//真实的.
		System.out.println("abc".matches("\\w+"));
		System.out.println("8".matches("\\d?"));//0 1
		System.out.println("81".matches("\\d+"));// 0 n
		System.out.println("8123".matches("\\d*"));//0 n
		System.out.println("8123".matches("\\d{4}"));//表示出现n次
		System.out.println("812".matches("\\d{0,10}"));//表示出现n~m次
		System.out.println("8123".matches("\\d{1,}"));//表示出现n次或n次以上
		System.out.println("gad".matches("ad"));
		
			//matches 全局匹配
			//创建指定匹配规则的模型
			Pattern pattern = Pattern.compile("ab([1-8]*)f");
			//创建匹配器
			Matcher matcher = pattern.matcher("ab5625836f");
			        
			if(matcher.matches()) 
			{
			      System.out.println(matcher.start() + " " + matcher.end() + " " + matcher.group());
			} 
			else 
			{
			      System.out.println("没有匹配到!");
			}
			
			//find可以匹配多组
			//创建指定匹配规则的模型
			Pattern pattern1 = Pattern.compile("ab([1-8]*)f");
			//创建匹配器
			Matcher matcher1 = pattern1.matcher("ab2fdsdfdfab348fdfab2333fddd");
			 
			int count = 1;
			while (matcher1.find()) {
				
			     System.out.println("第" + count + "组: " + matcher1.start() + " " + matcher1.end() + " " + matcher1.group());
			     count ++;
			   
			};
			String string="you are a student.";
			String []strings=string.split("[\\s\\d,.]");//默认逗号分割
			System.out.println(Arrays.toString(strings));
			StringTokenizer st=new StringTokenizer(string," .,");//默认空格,也可以加 ,.
			System.out.println(st.countTokens());//计算分开的个数
			while(st.hasMoreTokens())
			System.out.println(st.nextToken());
			
	}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值