惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

J
Java Code Geeks
博客园 - 聂微东
人人都是产品经理
人人都是产品经理
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
博客园_首页
量子位
阮一峰的网络日志
阮一峰的网络日志
酷 壳 – CoolShell
酷 壳 – CoolShell
H
Hackread – Cybersecurity News, Data Breaches, AI and More
云风的 BLOG
云风的 BLOG
D
DataBreaches.Net
B
Blog
L
LangChain Blog
Apple Machine Learning Research
Apple Machine Learning Research
Vercel News
Vercel News
博客园 - 三生石上(FineUI控件)
爱范儿
爱范儿
Microsoft Azure Blog
Microsoft Azure Blog
IT之家
IT之家
aimingoo的专栏
aimingoo的专栏
B
Blog RSS Feed
H
Help Net Security
The Cloudflare Blog
U
Unit 42

姓王者的博客

Linux用户Secure Boot自主维护指南 | 姓王者的博客 MAD Bugs 已经开始——关于信息安全的军备竞赛 | 姓王者的博客 解决钉钉Dingtalk无法在Linux新版内核上启动问题-修复可执行栈错误 | 姓王者的博客 突发:GitHub 正遭受大规模 Issue 赌博广告轰炸 | 姓王者的博客 Ubuntu26.04-beta体验:坚毅浣熊! | 姓王者的博客 fakeclaw装作龙虾发贴吧 | 姓王者的博客 找回12年前的QQ记忆 | 姓王者的博客 在Linux上玩Flash网页游戏-洛克王国 | 姓王者的博客 Copilot将使用交互数据来训练 | 姓王者的博客 重要通知-请更新我的GPG公钥 | 姓王者的博客 为了自由Android | 姓王者的博客 GPL"2,3"事 | 姓王者的博客 短文-对VitePlus的一点🤏小贡献 | 姓王者的博客 Bing收录没了?亲测有效的快速恢复指南 | 姓王者的博客 解决桌面设备二维码快速识别的工具-ClipQR | 姓王者的博客 解决 Nautilus 自定义终端插件安装依赖问题 | 姓王者的博客 OpenClaw 该熄火了 | 姓王者的博客 Vite8 - 统一的基建开始 | 姓王者的博客 Astro 6 推出啦 | 姓王者的博客 ubuntu的openvpn异常暂停推送更新 | 姓王者的博客 Ubuntu 24.04 安装 Win10 虚拟机 | 姓王者的博客 ESA-后记:热爱阿里云 | 姓王者的博客 Moonbit 0.8.0 重大发布,我也要改一下我的包 | 姓王者的博客 ESA Pages 边缘开发大赛获奖 | 姓王者的博客 Astro: 优化katex,mermaid和灯箱使用 | 姓王者的博客 从edgeone迁移到esa | 姓王者的博客 出租人类:AI时代的荒诞与真实 | 姓王者的博客 Astro 5.17构建性能优化实践:从18s到13s | 姓王者的博客 Moonbit License Checker 开发使用 | 姓王者的博客 Stalux Astro博客主题自荐 | 姓王者的博客
正则表达式学习 | 姓王者的博客
作者:xingwangzhe · 2024-12-20 · via 姓王者的博客

正则表达式学习

🕒 阅读时间:2 分钟 📝 字数:513 👀 阅读量: Loading...

抽象但效率高,学会的话很方便:)

前言

想为铁锈战争语法写高亮的,但是我不会写匹配模式,所以我开始学习正则表达式。 这篇文章可能会继续更新。

推荐网站:

Regex Learn - 逐步从零基础到高阶。

正则表达式文档

| 类别 | 表达式 | 描述 | | ------------ | ---------- | ------------------------------------------------ | ---------------------------- | | 修饰符 | /.../g | 全局匹配 | | | /.../i | 忽略大小写 | | | /.../m | 多行模式 | | | /.../s | 包含换行符 | | 特殊字符 | . | 匹配任意单个字符(除了换行符) | | | ^ | 匹配输入字符串的开始位置 | | | $ | 匹配输入字符串的结束位置 | | | * | 匹配前面的子表达式零次或多次 | | | + | 匹配前面的子表达式一次或多次 | | | ? | 匹配前面的子表达式零次或一次 | | | {n} | 匹配确定的n次 | | | {n,} | 至少匹配n次 | | | {n,m} | 最少匹配n次且最多m次 | | | [] | 匹配括号内的任意字符(字符集) | | | | | 匹配两项之间的任意一项(或) | | | \ | 转义特殊字符或表示特殊序列的开始 | | 预定义字符集 | \d | 匹配任意数字(等价于[0-9]) | | | \D | 匹配任意非数字字符 | | | \w | 匹配任意字母数字字符(等价于[a-zA-Z0-9_]) | | | \W | 匹配任意非字母数字字符 | | | \s | 匹配任意空白字符(包括空格、制表符、换行符等) | | | \S | 匹配任意非空白字符 | | 量词 | * | 匹配前面的字符零次或多次 | | | + | 匹配前面的字符一次或多次 | | | ? | 匹配前面的字符零次或一次 | | | {n} | 匹配前面的字符n次 | | | {n,} | 至少匹配n次 | | | {n,m} | 最少匹配n次且最多m次 | | 分组与捕获 | (...) | 将多个表达式组合成一个子表达式,并捕获匹配的文本 | | 零宽断言 | ^ | 匹配字符串的开始 | | | $ | 匹配字符串的结束 | | | \b | 匹配一个单词边界 | | | \B | 匹配一个非单词边界 | | | (?=...) | 正向前瞻断言,匹配…前面的位置 | | | (?!...) | 负向前瞻断言,匹配除了…外前面的位置 | | | (?<=...) | 正向后瞻断言,匹配…后面的位置 | | | (?<!...) | 负向后瞻断言,匹配除了…外后面的位置 |

一般而言,我们通常使用/.../g来进行全局匹配

特殊字符

直接匹配

/nihao/g

skdabgnihaoniasbf

.

这个是通配符,匹配任意字符,例如

/./g

saklnfobovibo

^

这个是匹配开头的字符串,例如

/^class/g

classroom

$

这个是匹配输入字符串的结尾

/room$/g

classroom

*

这个是匹配前面的字符零次或多次,也就是计算理论中的星闭包 *

/lu*ck/g

luck,luuuuuck,lck

+

这个是匹配前面的字符一次或多次,也就是计算理论中的加法闭包或叫正闭包 +

/go+gle/g

google,gooogle,goooooogle

?

这个是匹配前面的字符零次或一次.

/apples?/g

apples,apple

{}

{n}

这个是匹配确定的n次

/hello{3}/g

hellooo,hello,helloo

{n,}

这个是至少匹配n次,也可以看作一种区间形式

/hello{2,}/g

hellooo,helloo,helloo

{n,m}

这个是最少匹配n次且最多m次,可以理解为区间

/hello{2,4}/g

hellooo,helloo,hello,hell,helloooo