正则表达式的规范(笔记引自AI自动生成)

正则表达式(Regular Expression)

正则表达式(简称 regexregexp)是一种用于匹配和处理文本的强大工具。它通过定义特定的模式来描述字符串的结构,从而实现对文本的搜索、替换、提取等操作。


1. 基本字符

  • 普通字符:字母、数字、空格等,直接匹配自身。
    • 示例:a 匹配字符 a1 匹配字符 1
  • 特殊字符:具有特殊意义的字符,需要用反斜杠 \ 转义。
    • 示例:. 匹配任意字符,\. 匹配实际的句点 .

2. 元字符

元字符是正则表达式中具有特殊功能的字符,常见的元字符包括:

元字符描述
.匹配除换行符(\n)以外的任意单个字符。
^匹配字符串的开头。
$匹配字符串的结尾。
\转义字符,用于匹配特殊字符本身(如 \. 匹配 .)。
|逻辑“或”,匹配左边或右边的表达式。
()分组,将多个字符作为一个整体处理,或捕获匹配的内容。
[]字符集合,匹配括号内的任意一个字符。
{}量词,指定前面字符或分组的重复次数。

3. 字符集合

  • [abc]:匹配 abc 中的任意一个字符。
  • [^abc]:匹配除 abc 以外的任意字符。
  • [a-z]:匹配任意小写字母。
  • [A-Z]:匹配任意大写字母。
  • [0-9]:匹配任意数字。
  • \d:匹配任意数字,等价于 [0-9]
  • \D:匹配任意非数字字符。
  • \w:匹配任意字母、数字或下划线,等价于 [a-zA-Z0-9_]
  • \W:匹配任意非字母、数字或下划线的字符。
  • \s:匹配任意空白字符(空格、制表符、换行符等)。
  • \S:匹配任意非空白字符。

4. 量词

量词用于指定前面字符或分组的重复次数:

量词描述
*匹配前面的字符 0 次或多次。
+匹配前面的字符 1 次或多次。
?匹配前面的字符 0 次或 1 次。
{n}匹配前面的字符恰好 n 次。
{n,}匹配前面的字符至少 n 次。
{n,m}匹配前面的字符至少 n 次,至多 m 次。

5. 分组和捕获

  • ():将多个字符作为一个整体处理,并捕获匹配的内容。
    • 示例:(abc)+ 匹配 abcabcabc 等。
  • (?:):非捕获分组,只分组不捕获。
    • 示例:(?:abc)+ 匹配 abcabcabc,但不捕获内容。
  • \n:引用分组捕获的内容,n 是分组的序号(从 1 开始)。
    • 示例:(a)\1 匹配 aa

6. 边界匹配

  • ^:匹配字符串的开头。
    • 示例:^abc 匹配以 abc 开头的字符串。
  • $:匹配字符串的结尾。
    • 示例:abc$ 匹配以 abc 结尾的字符串。
  • \b:匹配单词边界。
    • 示例:\bword\b 匹配独立的单词 word
  • \B:匹配非单词边界。

7. 零宽断言

零宽断言用于指定匹配位置,但不消耗字符:

断言描述
(?=...)正向肯定预查,匹配后面满足条件的位置。
(?!...)正向否定预查,匹配后面不满足条件的位置。
(?<=...)反向肯定预查,匹配前面满足条件的位置。
(?<!...)反向否定预查,匹配前面不满足条件的位置。

8. 模式修饰符

模式修饰符用于改变正则表达式的匹配行为:

修饰符描述
i忽略大小写。
g全局匹配(匹配所有符合条件的字符串,而不仅仅是第一个)。
m多行模式,使 ^$ 匹配每行的开头和结尾。
s单行模式,使 . 匹配包括换行符在内的所有字符。

9. 常用正则表达式示例

匹配邮箱地址

 [a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}

匹配 URL

https?://[^\s]+

匹配手机号码

1[3-9]\d{9}

匹配日期(YYYY-MM-DD)

\d{4}-\d{2}-\d{2}

匹配 IP 地址

(\d{1,3}\.){3}\d{1,3}

10. 正则表达式的应用场景

  • 文本搜索:在文件中查找符合特定模式的字符串。

  • 数据验证:验证用户输入是否符合格式要求(如邮箱、电话号码等)。

  • 文本替换:将符合模式的字符串替换为指定内容。

  • 数据提取:从文本中提取特定格式的数据(如日期、URL 等)。


正则表达式是一种非常强大的工具,掌握它可以极大地提高文本处理的效率!
以上内容仅是个人学习用笔记,由DeepseeAI生成。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值