Java基础_正则表达

做帐号判定的时候,如果挨个判断就有点麻烦 。

单个字符判断

		String string1 = "[abc]"; //中括号表示单个字符,不能匹配字符串
		System.out.println("a".matches(string1)); //true
		System.out.println("ab".matches(string1)); //false

		String string2 = "[^abc]";//^是取反
		System.out.println("a".matches(string2));//false
		System.out.println("d".matches(string2));//true

		String string3= "[a-zA-Z]";//a-Z 26*2个字符
		System.out.println("a".matches(string3));//true
		System.out.println("dc".matches(string3));//false

		String string4= "[a-c[m-z]]";//a-Z 26*2个字符
		System.out.println("a".matches(string4));//true
		System.out.println("d".matches(string4));//false

		String string5= "[a-z&&[def]]";//a-z 与 def的交集 ,即def
		System.out.println("a".matches(string5));//false
		System.out.println("d".matches(string5));//true

		String string6= "[a-z&&[^def]]";//a-z 与 def取反的交集 ,即除了def
		System.out.println("a".matches(string6));//true
		System.out.println("d".matches(string6));//false

预定义字符判断

		//.表示任意字符 ,一个点表示任意一个字符,两个点代表两个 。和[]区别,[]无论多少都是一个字符
		String string1="..";
		System.out.println("aa".matches(string1));//true
		System.out.println("?".matches(string1));//false

		//  \d表示0-9 的单个数字,但是\是转义字符,所以需要两个		String string2="\\d";
		System.out.println("10".matches(string2));//false
		System.out.println("3".matches(string2));//true

		//  \D表示除了0-9的单个字符
		String string3="\\D";
		System.out.println("a".matches(string3));//true
		System.out.println("3".matches(string3));//false

		//  \s表示空白字符  \t\n\xOB\f\r
		String string4="\\s";
		System.out.println(" ".matches(string4));//true
		System.out.println("3".matches(string4));//false

		//  \S表示非空白字符  \t\n\xOB\f\r
		String string5="\\S";
		System.out.println(" ".matches(string5));//false
		System.out.println("3".matches(string5));//true

		//  \w表示[a-zA-Z0-9]		.大写W就不演示了
		String string6="\\S";
		System.out.println(" ".matches(string6));//false
		System.out.println("3".matches(string6));//true

数量次数判断

		//?代表一次或者一次也没有,与[]连用就是abc针对单个字符一个或者一个都不出现
		String string1="[abc]?";
		System.out.println("a".matches(string1));//true
		System.out.println("".matches(string1));//true
		System.out.println(" ".matches(string1));//false	

		//*代表0次到多次出现	,这里可以对字符串进行判断
		String string2="[abc]*";
		System.out.println("aaaaa".matches(string2));//true
		System.out.println("".matches(string2));//true
		System.out.println("abcd".matches(string2));//false
		System.out.println("abc".matches(string2));//true

		//+代表1次到多次出现,可以对字符串判断
		String string3="[abc]+";
		System.out.println("aaaaa".matches(string3));//true
		System.out.println("".matches(string3));//false
		System.out.println("abcd".matches(string3));//false
		System.out.println("abc".matches(string3));//true		

		//{n}代表恰好N次 , 还有{n,m} ,至少n次不超过m次,还有{n,} ,至少n次
		String string4="[abc]{3}";
		System.out.println("abc".matches(string4));//true
		System.out.println("a".matches(string4));//false
		System.out.println("abcd".matches(string4));//false

字符串切割

		String string = "abcd" ;
		String regex ="";//拿空格去切割字符串,生成数组
		String[] arr =string.split(regex);
		for(int i=0;i<string.length();i++){
			System.out.println(arr[i]);
		} // a b c d
时间: 2024-10-06 22:51:05

Java基础_正则表达的相关文章

Java基础——字符串正则及Scanner

1.正则表达式 1.1.基础 字符串处理问题一般集中在匹配.选择.编辑于验证上,而正则表达式提供了一种完全通用的方式来解决这些问题 正则表达式就是以某种模式描述字符串,因此你可以说:“如果一个字符串含有这些东西,那么它就是我要找的东西”.例如我们可以用一下模式匹配数字:(-|\\+)?\\d+,他可以匹配任意整数. 测试如下: public class IntegerMatch { public static void main(String[] args) { System. out.prin

【BigData】Java基础_创建一个订单类

需求描述 定义一个类,描述订单信息订单id订单所属用户(用户对象)订单所包含的商品(不定数量个商品对象)订单总金额订单应付金额:    总金额500~1000,打折85折    总金额1000~1500,打折80折    总金额1500~2000,打折70折    总金额超过2000,打折65折         在此基础上,还要看用户的vip等级    用户vip等级为:一般会员,则折上折:95    用户vip等级为:中级会员,则折上折:90    用户vip等级为:高级会员,则折上折:80

【BigData】Java基础_接口

接口概念 Java接口是一系列方法的声明,是一些方法特征的集合,一个接口只有方法的特征没有方法的实现,因此这些方法可以在不同的地方被不同的类实现,而这些实现可以具有不同的行为(功能). 以下是个人理解: 在软件开发过程中,当我们开发一个大型项目的时候,可能很多人一起共同开发一个项目,但是整个项目分为很多模块,我们不能按照顺序去开发模块,等A团队开发测试完毕第一个模块,B团队才开始开发第二个模块,这样的话,如果A团队出现延期,那么将会影响整个项目的开发进度,所以这种串行的开发方式是不行的,那么我们

JAVA基础_可变参数

自JAVA1.5以来,在JAVA中出现了可变参数一说,其针对的情况是对多个不确定的相同类型的元素进行同一类操作的情形. 可变参数有点类似与重载的概念,但是其中的可变参数是被隐式的转换成数组来进行处理的. 例如:对多个数进行求和,但是不知道具体有多少个这样的数. 使用条件: 可变参数必须是函数的最后一个变量,即在参数列表的最后 可变参数用 - 表示 调用可变参数的方法时,编译器会为该可变参数隐含创建一个数组,在方法体中以数组的形式访问可变参数 /** * 多个参数求和 * @author Admi

JAVA基础_类加载器

什么是类加载器 类加载器是Java语言在1.0版本就引入的.最初是为了满足JavaApplet需要.现在类加载器在Web容器和OSGI中得到了广泛的应用,一般来说,Java应用的开发人员不需要直接同类加载器进行交互.Java虚拟机默认的行为就已经足够满足大多数情况的需求了.不过如果遇到了需要与类加载器进行交互的情况,而对类加载器的机制又不是很了解的话,就很容易花大量的时候在ClassNotFoundException和NoClassDefFoundError等异常上. 顾名思义,类加载器是用来加

JAVA基础_泛型

什么是泛型 泛型是提供给javac编译器使用的,可以限定集合中的输入类型,让编译器挡住源程序中的非法输入,编译器编译带类型说明的集合时会去除掉"类型"信息,是程序的运行效率不受影响,对于参数化的泛型类型,getClass()方法返回值和原始类型完全一样.由于编译生成的字节码会擦除泛型的类型信息,只要能跳过编译器,就可以往某个泛型集合中加入其它类型的数据,例如,用反射得到集合,然后再调用add()方法即可 GenericDemo.java public class GenericDemo

Java基础_学习笔记_16_线程

1.进程与线程 进程,在多任务操作系统中,每个独立执行的程序称为进程,也就是“正在进行的程序”.进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配的最小单元. 线程,是进程中的一部分,是一个程序内部的一条执行线索.在网络或多用户环境下,一个服务器需要接受大量且不确定用户数量的并发请求,为每一个请求创建一个进程显然是行不通的,因此引入了线程.线程是最小的调度单元.通常在一程序中实现多段代码同时交替运行时,需要产生多个线程,并制定每个线程上所要运行的程序代码块,这就

Java基础_学习笔记_14_异常

1 class Test 2 { 3 public int devide(int x,int y) 4 { 5 int result=x/y; 6 return result; 7 } 8 } 9 class TestException 10 { 11 public static void main(String [] args) 12 { 13 Test t=new Test(); 14 t.devide(2,0); 15 System.out.println("the program is

java String matches 正则表达

package test; /** * 在String的matches()方法,split()方法中使用正则表达式. * @author fhd001 */ public class RegexTest { public static void main(String[] args) { /* * 普通字符 */ String str1 = "abc45abc345"; String[]arr1 = str1.split("abc"); for (String st