正则表达式

文章目录


正则表达式从功能上大致分为

  1. 限定符:限定出现的次数
  2. 选择匹配符
  3. 分组组合和反向引用符
  4. 特殊字符
  5. 字符匹配符
  6. 定位符

元字符-转义符号

当我们使用正则表达式去检索某些特殊字符的时候,需要用到转义字符,否则检索不到结果,甚至会报错。

转义字符:\ 或 \

大多数语言的转移字符是 \ , java中是 \

需要用到转义字符的字符有:. * + ( ) $ / \ ? [ ] ^ { }

字符匹配符

符号 释义 实例 解释
[ ] 接收的字符列表 [efkl] e,f,k,l 中的任意一个字符
[ ^ ] 不接收的字符列表 [^abc] 除a,b,c之外的任意字符(包括数字和符号)
- 连字符 A-Z 任意单个大写字母
. 匹配出\n 意外的任何字符 a...b 以a开头并以b结尾 中间包括两个任意字符的长度为4的字符串。例如 :a47b 、a&*b、aaab
\\d 匹配单个数字字符,相当于[0-9] \\d{3}(\\d)? 包含3个或4个数字的字符串 例如:996 1024
\\D 匹配单个非数字字符,相当于[^0-9] \\D(\\d)* 以单个非数字开头,后接任意个数字字符。例如:a10086、b2、
\\w 匹配单个数字、大小写字母字符和_。相当于[0-9a-zA-Z_] \\d{3}\\w{4} 以3个数字开头的长度为7的字符串。例如:996YYDS、007QNMD、5211314
\\W 匹配单个非数字、大小写字母字符。相当于[^0-9a-zA-Z] \\D+\\d{2} 以至少一个非数字字母开头,2个数字结尾的字符串。例如:#*&^29、&99、%100

a-z\]:表示可以匹配 a-z 中任意一个字符。 \[A-Z\]:表示可以匹配 A-Z 中任意一个字符。 (?i)abc:表示不区分大小写的匹配 ?i) 后面的字符串 ![image.png](https://file.jishuzhan.net/article/1771825083308838913/af5d3325fa654ceeb26898fe82dfdc0b.webp) \[\^a-z\]:否定匹配 \[\^A-Z\]:否定匹配 \[\^0-9\]:否定匹配 \[\^a-z\]{2}:表示匹配不是小写字母的两个 ![image.png](https://file.jishuzhan.net/article/1771825083308838913/f95b01a3275bf6b74dbd3fbcdfbb544a.webp) ## 选择匹配符 \| : 匹配"\|"之前或者之后的表达式 ## 正则限定符 ![image.png](https://file.jishuzhan.net/article/1771825083308838913/654bc845df7d6d98178c0fa1af7f3b70.webp) ![image.png](https://file.jishuzhan.net/article/1771825083308838913/991199ae0cf2e1458a77944f307d20b8.webp) ## 定位符 | **符号** | **含义** | **示例** | **说明** | **举例** | |--------|-------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------------|-------------------| | \^ | 指定起始字符 | ^[1](#符号 含义 示例 说明 举例 ^ 指定起始字符 1+[a-z]* 029、9i、996gun、9 $ 指定结束字符 2\\-[a-z]+$ 1-a、9-n、0-y \\b 匹配目标字符串的边界 snow\\b Iamsnow HowAreYou \\B 匹配目标字符串的非边界 snow\\B 与 上面相反 IamSnowHowAreU)^+\[a-z\]\* | ![image.png](https://file.jishuzhan.net/article/1771825083308838913/55d80ee618ab7f8fc37f212c22711006.webp) | 029、9i、996gun、9 | | $ | 指定结束字符 | ^[2](#符号 含义 示例 说明 举例 ^ 指定起始字符 1+[a-z]* 029、9i、996gun、9 $ 指定结束字符 2\\-[a-z]+$ 1-a、9-n、0-y \\b 匹配目标字符串的边界 snow\\b Iamsnow HowAreYou \\B 匹配目标字符串的非边界 snow\\B 与 上面相反 IamSnowHowAreU)^\\\\-\[a-z\]+$ | ![image.png](https://file.jishuzhan.net/article/1771825083308838913/dc68ad0618139e1a036d5f9e78de4464.webp) | 1-a、9-n、0-y | | \\\\b | 匹配目标字符串的边界 | snow\\\\b | ![image.png](https://file.jishuzhan.net/article/1771825083308838913/1ac26ab5cec8b84f33bed82e1d2be6a6.webp) | Iamsnow HowAreYou | | \\\\B | 匹配目标字符串的非边界 | snow\\\\B | 与 上面相反 | IamSnowHowAreU | ## 逻辑运算 * \&\& :并且 * \| :或者 ```java public class RegexDemo2 { public static void main(String[] args) { // 1 要求字符串是除a、e、i、o、u外的其它小写字符开头,后跟ad System.out.println("vad".matches("[a-z&&[^aeiou]]ad")); // 2 要求字符串是aeiou中的某个字符开头,后跟ad System.out.println("aad".matches("[a|e|i|o|u]ad")); } } ``` ## 捕获分组 ![image.png](https://file.jishuzhan.net/article/1771825083308838913/41107ae3028e3c886235ede2899e6e5c.webp) ![image.png](https://file.jishuzhan.net/article/1771825083308838913/ee149ded7f6f4589f7b30495adf14f15.webp) ## 应用 ### 验证汉字 `^[\u0391-\uffe5]+$` ### 验证手机号码 `^1[3|4|5|7|8|9][0-9]{9}$` ![在这里插入图片描述](https://file.jishuzhan.net/article/1771825083308838913/1fef9f4e58e292caa82fee193fe2e5d1.webp) *** ** * ** *** 1. 0-9 [↩︎](#↩︎) 2. 0-9 [↩︎](#↩︎)

相关推荐
htj102 天前
C# 使用正则表达式
正则表达式·c#
ZZZKKKRTSAE2 天前
快速上手Linux全局搜索正则表达式(grep)
linux·服务器·正则表达式
Kusunoki_D2 天前
Python-正则表达式(re 模块)
python·正则表达式
数字芯片实验室3 天前
正则表达式的前世今生
正则表达式
Lenyiin3 天前
《 C++ 点滴漫谈: 四十 》文本的艺术:C++ 正则表达式的高效应用之道
c++·正则表达式·lenyiin
AA-代码批发V哥3 天前
Java正则表达式完全指南
java·正则表达式
coding随想5 天前
JavaScript中的正则表达式:文本处理的瑞士军刀
javascript·mysql·正则表达式
OldField-Tian5 天前
Qt中使用正则表达式来提取字符串
qt·正则表达式
datascome5 天前
简数采集技巧之快速获取特殊链接网址URL方法
前端·经验分享·爬虫·程序人生·正则表达式
WebCsDn_TDCode5 天前
正则表达式检测文件类型是否为视频或图片
javascript·正则表达式·音视频