正则表达式

关注公众号 jb51net

关闭
首页 > 网络编程 > 正则表达式 > 正则表达式核语法速查

正则表达式核心知识点语法速查表

作者:尚浩码农

正则表达式是一种文本模式匹配的工具,它用于描述一种字符组成的规则,在文本处理中,正则表达式被广泛用于搜索、替换、匹配、验证等操作,这篇文章主要介绍了正则表达式核心知识点语法速查的相关资料,需要的朋友可以参考下

前言

正则表达式是处理字符串的强大工具,广泛应用于文本匹配、验证、提取和替换等场景。无论是开发、数据分析还是日常办公,掌握正则表达式都能大幅提升效率。以下是系统梳理的核心知识点:

一、基础概念与作用

二、基础语法:元字符与规则

1. 匹配单个字符

元字符含义示例
.匹配任意单个字符(除换行\n、回车\r)a.b  匹配 aab、acb,不搭配ab
[]匹配括号内任意一个字符[abc]  匹配a、b或c
[^]匹配不在括号内的任意字符[^abc]  匹配搭配d、e等非 a/b/c 的字符
\d匹配数字(等价于[0-9])\d{3}  匹配123、456等3位数字
\D匹配非数字(等价于[^0-9])\D  匹配a、b等非数字字符
\w匹配数字、字母、下划线(等价于[0-9a-zA-Z_])\w  匹配1、a、b2、c5_等
\W匹配非数字、字母、下划线(等价于[^0-9a-zA-Z_])\W  匹配@、#、¥等
\s匹配空白字符(含空格“ ”、换行\n、回车\r、制表符\t等)a\sb  匹配"a b"、"a\nb"、"a\rb"等
\S匹配非空白字符a\Sb 匹配"ab"、不匹配"a b"

注意:如果需要匹配元字符本身(如  * 等),需要用到 \ 进行转义,例如 \. 匹配小数点、 \* 匹配星号。

2. 匹配数量:量词

用于指定字符或分组出现的次数

量词含义示例
*匹配0次或多次(尽可能多,贪婪模式)ab* 匹配a、ab、abb等
+匹配1次或者多次ab* 匹配ab、abb等,不匹配a
?匹配0次或者1次ab* 匹配a、ab
{n}精确匹配n次ab{2} 匹配abb
{n,}匹配至少n次ab{2,} 匹配abb,abbb等
{n,m}匹配n到m次 包含(n和m)ab{2,4}匹配abb、abbb、abbbb

贪婪和非贪婪:默认是贪婪模式(尽可能多的匹配),在量词后面加问号 ? 切换成非贪婪模式(尽可能少的匹配),例如 a.*b 匹配  axxbxxb 中的 axxbxxb ,而 a.*?b 匹配 axxb 

3. 位置匹配:边界与锚点

用于定位字符串的位置(不匹配具体字符)

元字符含义示例
^匹配字符串开头(多行模式下匹配每行开头)^abc 匹配abcd 不匹配1abcd
$匹配字符串结尾(多行模式下匹配每行结尾)abc$ 匹配1abc 不匹配abcd
\b匹配单词边界(字母数字与非字母数字的交界处)\bcat\b 匹配 cat、cat!,不匹配category
\B匹配非单词边界\Bcat\B 匹配category中cat,不匹配单独的cat

4、分组与引用

名称含义示例
分组用括号()将多个字符视为一个整体,可结合量词使用(ab)+  匹配ab、abab,不匹配abb
捕获分组分组会默认编号(从1开始),可通过\n(正则中)和$n(替换时)引用(\d{4})-(\d{2})-(\d{2}) 匹配日期,替换为$3/$2/$1  可转为“日/月/年”格式
非捕获分组用(?:)定义,仅分组不捕获(不分配编号,节省资源)(?:\d{4})-(\d{2})-(\d{2}) 匹配日期,替换为$2/$1  可转为“日/月”格式,不捕获年份,所以$1代表了月份
分支条件用符号 | 表示“或”关系,匹配多个模式中的一个

abc|adc 匹配 abc 或 adc;

a(b|d)c 匹配 abc 或  adc

5、特殊模式:标志(修饰符)

用于调整正则的匹配规则

标志含义示例
i忽略大小写abc/i 匹配abc、AbC
g全局匹配(找到所有匹配,而非第一个)a/g 匹配aaab 中的所有a
m多行模式(^和$匹配每行的开头和结尾)^a/m 匹配 a\nabc中的2个a
s单行模式( . 就可以匹配换行符)a.b/s 可以匹配a\nb,但a.b不可匹配

6、断言的类型

断言是正则表达式中用于指定匹配位置的元字符,它们不匹配任何实际字符,而是匹配字符之间的位置。简单来说,断言就是"条件",它要求目标字符串必须满足某些条件,但不会消耗字符。

类型含义示例
正向先行断言(?=pattern)匹配后面跟着 pattern 的位置/[a-z](?=\d)/ 匹配a1 中的a
负向先行断言(?!pattern)匹配后面不跟着pattern的位置/[a-z](?!\d)/ 匹配ab中的a
正向后行断言(?<=pattern)匹配前面跟着 pattern 的位置/(?<=\d)[a-z]/ 匹配1a中的a
负向后行断言(?<!pattern)匹配前面不跟着pattern的位置/(?<!\d)[a-z]/ 匹配ab中的a

7、常用的场景案例

案例规则正则
手机号11 位数字,以 1 开头,第二位为 3/4/5/7/8^1[34578]\d{9}$
邮箱用户名 @域名(域名含。和字母 / 数字)^\w+([+-.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$
提取url中的域名从 "https://www.example.com/path"提取"www.example.com"https?://([^/]+)(通过分组捕获域名)
匹配日期YYYY-MM-DD 格式^\d{4}-(0[1-9]|1[0-2])-(0[1-9]|[12]\d|3[0-1])$

总结 

到此这篇关于正则表达式核心知识点语法速查表的文章就介绍到这了,更多相关正则表达式核语法速查内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文