Java038——正则表达式

一、认识正则表达式

正则表达式通常被用于判断语句中,用来检查某一字符串是否满足某一格式。正则表达式是含有一些具有特殊意义字符的字符串,这些特殊字符称为正则表达式的元字符。例如,"\d"表示数字 0~9 中的任何一个,"d"就是元字符。正则表达式中的元字符及其意义下所示。

java 复制代码
元字符				正则表达式中的写法						意义		
. 							.							任意一个字符
\d							\\d							0~9 的任何一个数字
\D							\\D							任何一个非数字字符
\s							\\s							空白字符,如'\t'、'\n'
\S							\\S							非空白字符
\w							\\w							可用于标识符的字符,但不包括"$"
\W							\\W							不可用于标识符的字符
\p{Lower}					\\p{Lower}					小写字母 a~z
\p{Upper}					\\p{Upper}					大写字母 A~Z
\p{ASCI}					\\P{ASCI}					ASCI 字符
\p(Alpha}					\\p(Alpha}					字母字符
\p{Digit}					\\p{Digit}					十进制数字,即 0~9
\p{Alnum}					\\p{Alnum}					数字或字母字符
\p{Punct}					\\p{Punct}					标点符号: !"#$%&'()*+,-./:;<=>?@[\]^_`{|}~
\p{Graph}					\\p{Graph}					可见字符:[\p{Alnum}\p{Punct}]
\p{Print}					\\p{Print}					可打印字符:[\p{Graph}\x20]
\p{Blank}					\\p{Blank}					空格或制表符:[\t]
\p{Cntrl}					\\p{Cntrl}					控制字符:[\x00-\x1Fx7F]

在正则表达式中,"."代表任何一个字符,因此在正则表达式中如果想使用普通意义的点字符"."必须使用转义字符"/"

二、在正则表达式中方括号的作用

在正则表达式中,可以使用方括号括起若干个字符来表示一个元字符,该元字符可代表方括号中的任何一个字符。例如,reg ="[abc]4",这样字符串 a4、b4、c4 都是和正则表达式匹配的字符串。方括号元字符还可以为其他格式。如:

java 复制代码
   方括号表达式				说明
======================================================================================================================
	表示枚举				例如[abc]表示 a、b、c 其中任意一个字符;[gz]表示 g、z 其中任意一个字符
----------------------------------------------------------------------------------------------------------------------
	表示范围:-			例如[a-f]表示 a~f 范围内的任意字符;[\\u0041-\\u0056]表示十六进制字符 \u0041 到 \u0056 范围的字符。范围
						可以	和枚举结合使用,如[a-cx-z],表示 a~c、x~z 范围内的任意字符
----------------------------------------------------------------------------------------------------------------------
	表示求否:^			例如[^abc]表示非 a、b、c 的任意字符;[^a-f]表示不是 a~f 范围内的任意字符
----------------------------------------------------------------------------------------------------------------------
	表示"与"运算:&&		例如 [a-z&&[def]]是 a~z 和 [def] 的交集,表示 d、ef[a-z&&^bc]]是 a~z 范围内的所有字符,除 b 和 c 之外
						[ad-z] [a-z&&[m-p]]是 a~z 范围内的所有字符,除 m~p 范围之外的字符
----------------------------------------------------------------------------------------------------------------------
	表示"并"运算			并运算与前面的枚举类似。例如[a-d[m-p]]表示 [a-dm-p]

简单例子

java 复制代码
[^456]: 代表 4、5、6之外的任何字符。
[a-r]: 代表 a~r 中的任何一个字母。
[a-zA-Z]: 可表示任意一个英文字母。
[a-e[g-z]]:代表 a~e 或 g~z 中的任何一个字母 (并运算)。
[a-o&&[def]]: 代表字母 d、e、f (交运算)。
[a-d&&[^bc]]: 代表字母 a、d (差运算)。

三、在正则表达式中使用限定修饰符

在正则表达式中允许使用限定修饰符来限定元字符出现的次数。例如,"A*"代表 A 可在字符串中出现 0 次或多次。限定修饰符的用法如下 所示。

java 复制代码
限定修饰符		   意义			示例
	?			0次或1次			A?
	*			0次或多次		A*
	+			1次或多次		A+
	{n}			正好出现n次		A{2}
	{n,}		至少出现n次		A{3,}	
	{n,m}		出现n~m次		A{2,6}

四、Java 正则表达式使用

  1. 导入 Java 正则表达式库:
    在代码中首先导入 java.util.regex 包,以便使用正则表达式相关的类和方法。
java 复制代码
import java.util.regex.*;
  1. 实例:使用Java使用正则表达式判断字符串变量str以wang开头以5688结尾
java 复制代码
package MyPackage;

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

public class TestDemo{
    public static void main(String[] args) {
        String str = "wang12345688";

        // 1、定义正则表达式
        String regex = "^wang.*5688$";

        // 2、编译正则表达式为 Pattern 对象
        Pattern pattern = Pattern.compile(regex);

        // 3、创建 Matcher 对象,用于进行匹配
        Matcher matcher = pattern.matcher(str);

        // 4、判断是否匹配成功
        if (matcher.matches()) {
            System.out.println("字符串匹配成功");
        } else {
            System.out.println("字符串匹配失败");
        }
    }
}

//运行结果
字符串匹配成功

推荐文章《Java正则表达式详解》

与君共享

👉👉👉👉👉最后,有兴趣的小伙伴可以点击下面链接,这里有我整理的完整Java学习博客内容,谢谢~ 🌹🌹🌹🌹🌹

《Java基础专栏完整学习》

相关推荐
库库林_沙琪马31 分钟前
Redis 持久化:从零到掌握
数据库·redis·缓存
牵牛老人2 小时前
Qt中使用QPdfWriter类结合QPainter类绘制并输出PDF文件
数据库·qt·pdf
卡西里弗斯奥4 小时前
【达梦数据库】dblink连接[SqlServer/Mysql]报错处理
数据库·mysql·sqlserver·达梦
温柔小胖4 小时前
sql注入之python脚本进行时间盲注和布尔盲注
数据库·sql·网络安全
杨俊杰-YJ5 小时前
MySQL 主从复制原理及其工作过程
数据库·mysql
一个儒雅随和的男子5 小时前
MySQL的聚簇索引与非聚簇索引
数据库·mysql
独泪了无痕7 小时前
MySQL查询优化-distinct
后端·mysql·性能优化
V+zmm101347 小时前
基于微信小程序的家政服务预约系统的设计与实现(php论文源码调试讲解)
java·数据库·微信小程序·小程序·毕业设计
roman_日积跬步-终至千里7 小时前
【分布式理论14】分布式数据库存储:分表分库、主从复制与数据扩容策略
数据库·分布式
hadage2338 小时前
--- Mysql事务 ---
数据库·mysql