javase笔记3----正则表达式

正则表达式

简介

正则表达式(Regular Expressions),是一个特殊的字符串,可以对普通的字符串进行校验检测等工作,校验一个字符串是否满足预设的规则。

基本语法

字符集合

\] : 表示匹配括号里的任意一个字符。 \[abc\] :匹配a 或者 b 或者 c \[\^abc\] : 匹配任意一个字符,只要不是a,或b,或c 就表示匹配成功 \[a-z\] : 表示匹配所有的小写字母的任意一个。 \[A-Za-z\] :表示匹配所有的小写字母和大写字母的任意一个。 \[a-zA-Z0-9\]:表示匹配所有的小写字母和大写字母和数字的任意一个。 \[a-z\&\&\[\^bc\]\] :表示匹配所有的小写字母除了b和c, 只要匹配上就是true.

java 复制代码
System.out.println("a".matches("[abcdefg]"));
String regex = "[^hg]";
String str = "a";
System.out.println(str.matches(regex);//true

预定义字符集

\d: 用于匹配数字字符中的任意一个 相当于[0-9]

\w: 匹配单词字符中的任意一个 单词字符就是a-zA-Z0-9

\D: 用于匹配非数字字符中的任意一个 相当于[^0-9]

\W: 用于匹配非单词字符中的任意一个

\s: 用于匹配空格,制表符,退格符,换行符等中的任意一个

\S: 用于匹配非空格,制表符,退格符,换行符等中的任意一个

. : 用于匹配任意一个字符

java 复制代码
System.out.println("c".matches("[\\w]"));
System.out.println("a".matches("\\w"));
System.out.println("+".matches("."));

数量词

X? :匹配0个或1个

X* :匹配0个或1个以上

x+ :匹配1个以上

X{n} :匹配n个

X{m,}:匹配m个以上

X{m,n}:匹配m~n个

java 复制代码
//匹配密码,要求密码必须是8位的数字或字母组合
System.out.println("123abc45".matches("[a-zA-Z0-9]{8}")); //true
System.out.println("123abc".matches("[a-zA-Z0-9]{8})); //false
System.out.println("123abc456".matches("[a-zA-Z0-9]{8}));//false
//匹配用户名: 用户名是由字母数字和下划线组成,5-8位
System.out.println("_abc123".matches("\\w{5,8}")); //true

分组

在正则表达式上可以使用()来进行对一些字符分组,并可以使用逻辑运算符|来进行选择匹配

java 复制代码
String regex1 = "(13|18|15)(7|8|9)[\\d]{8}";
System.out.println("13811110000".matches(regex1));//true
System.out.println("13311110000".matches(regex1)); //false

^和$

^:表示严格从头匹配

$: 表示匹配到结尾

常用方法

  1. boolean matches(String regex)

判断this字符串是否匹配正则表达式regex

  1. String[] split(String regex)

对this使用匹配上正则表达式的子串进行切分成字符串数组

  1. replaceAll()
java 复制代码
String username = "lily123";
String regex = "[a-zA-Z0-9[[\\w]{7,9}";
//检查用户名是否匹配
boolean flag = username.matches(regex);
if(flag){
    System.out.println("用户名可用");
}else{
    System.out.println("用户名不可用");
}
java 复制代码
String str = "hello123world456welcome789";
//请使用数字将其切分成字符串数组
String regex1 = "\\d+";
String[] arr = str.split(regex1);
System.out.println(Arrays.toString(arr)); //[hello,word,welcome]
System.out.println(arr.length); //3
str = "888aaa9bbb10ccc";
arr = str.split(regex1);
System.out.println(Arrays.toString(arr));//[,aaa,bbb,ccc]
System.out.println(arr.length);//4
str = "123abc234def235hhh";
arr = str.split("3");
System.out.println(Arrays.toString(arr)); //[12,abc2,4def2,5hhh]
System.out.println(arr.length); //4
java 复制代码
String info = "no zuo no die";
String newInfo = info.replaceAll("no","yes");
System.out.println(newInfo);
相关推荐
蒙奇D索大6 小时前
【数据结构】考研数据结构核心考点:二叉排序树(BST)全方位详解与代码实现
数据结构·笔记·学习·考研·算法·改行学it
玲娜贝儿--努力学习买大鸡腿版7 小时前
推荐算法学习笔记(十九)阿里SIM 模型
笔记·学习·推荐算法
我命由我123458 小时前
Photoshop - Photoshop 工具栏(10)透视裁剪工具
经验分享·笔记·学习·ui·职场和发展·职场发展·photoshop
JJJJ_iii9 小时前
【深度学习03】神经网络基本骨架、卷积、池化、非线性激活、线性层、搭建网络
网络·人工智能·pytorch·笔记·python·深度学习·神经网络
玉石观沧海9 小时前
高压变频器故障代码解析F67 F68
运维·经验分享·笔记·分布式·深度学习
初级炼丹师(爱说实话版)10 小时前
MySql速成笔记5(多表关系)
笔记
iconball11 小时前
个人用云计算学习笔记 --19 (MariaDB服务器)
linux·运维·笔记·学习·云计算
岑梓铭11 小时前
《考研408数据结构》第四章(串和串的算法)复习笔记
数据结构·笔记·考研·算法
冬夜戏雪12 小时前
记录下C盘清理步骤(有效)
经验分享·笔记
我登哥MVP12 小时前
Apache Tomcat 详解
java·笔记·tomcat