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

推荐订阅源

G
GRAHAM CLULEY
T
Tenable Blog
Know Your Adversary
Know Your Adversary
C
CXSECURITY Database RSS Feed - CXSecurity.com
P
Privacy International News Feed
S
Security Affairs
NISL@THU
NISL@THU
O
OpenAI News
Attack and Defense Labs
Attack and Defense Labs
Application and Cybersecurity Blog
Application and Cybersecurity Blog
Hacker News: Ask HN
Hacker News: Ask HN
Webroot Blog
Webroot Blog
Schneier on Security
Schneier on Security
S
SegmentFault 最新的问题
S
Schneier on Security
G
Google Developers Blog
V
V2EX
C
Check Point Blog
U
Unit 42
Google DeepMind News
Google DeepMind News
T
Threatpost
阮一峰的网络日志
阮一峰的网络日志
T
The Exploit Database - CXSecurity.com
Recent Announcements
Recent Announcements
M
MIT News - Artificial intelligence
S
Secure Thoughts
博客园 - 司徒正美
Recorded Future
Recorded Future
P
Proofpoint News Feed
Spread Privacy
Spread Privacy
K
Kaspersky official blog
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
AI
AI
博客园 - 聂微东
N
News and Events Feed by Topic
SecWiki News
SecWiki News
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
V
Vulnerabilities – Threatpost
P
Palo Alto Networks Blog
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
Engineering at Meta
Engineering at Meta
Recent Commits to openclaw:main
Recent Commits to openclaw:main
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
酷 壳 – CoolShell
酷 壳 – CoolShell
WordPress大学
WordPress大学
The Hacker News
The Hacker News
The Last Watchdog
The Last Watchdog
Project Zero
Project Zero
W
WeLiveSecurity
博客园 - Franky

正则表达式

增加一点动力学正则 - V2EX 求教,如何系统性的学习正则表达式? - V2EX sigil 正则表达式疑问 - V2EX editplus 中如何去掉空格 - V2EX 临门一脚,这个正则怎么匹配不上字符串啊? - V2EX 正则如何完整匹配整个单词 - V2EX 请问 EM 正则如何在文章最前面添加一段话 - V2EX 求教,这个正则怎么写 - V2EX /(\w*)*$/.test('aaa#')这个正则导致我们的页面炸了……不同语言居然不一样 - V2EX 这个可以用正则表达式做到吗?GPT 聊了半天了 - V2EX [求助]如何利用正则表达式将文本或换行用 p 标签包裹起来 - V2EX 正则匹配,怎么匹配不定内容的成对的中间的内容呢? - V2EX 正则表达式 locate --regex 'bin/(bz|gz|zip)'有没语法问题? - V2EX 上下两行内容合并正则有办法能实现吗 - V2EX 正则表达式如何截取一个完整括号的内容 - V2EX 有对 posix-正则 有研究的吗?问下 - V2EX editplus 求个全选正则忽略前面的符号及符号内的内容 - V2EX 各位老哥,正则怎么写能排除一个或多个特定的 IP,匹配剩余所有 IP(或者说是否可以实现) - V2EX 想请教一个正则表达式,这正则能做吗 - V2EX 使用正则.*ab.*搜索二进制文件(pdf 格式),搜不到 ab 但是.*a.*可以找到 a,除了 ab 还有别的正则写法么? - V2EX 这个正则表达式怎么写,要么在开头,要么前面有空格 - V2EX 求助:正则获取 sql 语句中的表名 - V2EX Safari 上不支持向后匹配的正则表达式,请教替代方法 - V2EX 正则表达式如何忽略子字符串中的内容 - V2EX 求助 nginx 的 rewrite,需求是把 http 流量转到 https - V2EX 求大佬指点 - V2EX iHateRegex 一个收录各种正则表达式的网站 - V2EX 请教一下,如何利用正则表达将 html 中在<p></p>之间的/筛选出来 - V2EX ep 求一个数字和单位的正则 - V2EX 正则菜鸟求教 - V2EX 正则 backtrack 请教 - V2EX 求给生成一个正则表达式,年龄大了,脑子不够用了 - V2EX 请问正则这种替换该怎么填 - V2EX 求个表格补 0 的正则表达式。 - V2EX 求个正则? pathname/{id}/sub_pathname - V2EX [求助] 请问正则从后往前非贪婪匹配 - V2EX [求助]正则表达式的正向否定预查,无法筛选某些字符串 - V2EX 全书很多空格,求一个正则表达式帮我看看是否行的通? - V2EX 请问正则表达式中,中间部分的?:的作用是什么? - V2EX 关于正则数字添加千分号 /\B((?=(?:\d{3}))+$)/g 不太理解 - V2EX 请问提取 caseId 的数字正则怎么写? - V2EX 求个正则 - V2EX JS 里面的 string.match,怎么把匹配字符串取出来? - V2EX 求大佬指点 js 正则,拜谢 - V2EX 求问:正则对位置匹配是怎么处理的? 正则表达式如何嵌套匹配 - V2EX 我请教一个 Python 正则表达式问题 - V2EX 提问一个正则匹配的问题 - V2EX
正则表达式合集帖(希望本帖能存活十年以上) - V2EX
oakland · 2024-03-29 · via 正则表达式
oakland

47

oakland      2024 年 4 月 10 日

我说一下我对于正则表达式的理解,以及 #4 楼的正则表达式是如何写出来的。
正则表达式是一种线性表达式,它可以表达 concatenation / alternative / repeat 这 3 种类型,但是它不可以表达“递归”,在 Chomsky 语言级别中属于 type-3 这个级别,也就是说它的语法决定了它表达的内容是有限的。

concatenation 换句话来说就是串行,比如 /ab/ 这个正则表达式表达的就是 a 和 b 连接起来的内容。

alternative 换句话来说就是并行,也可以说是 “或” 的关系,比如 /a|b/ 表达的就是 a 或者 b 这种模式。

repeat 就是重复,比如 /a*/ 表达的就是 0 到 无穷多 次的 a 。/a+/ 表示的是 1 到 无穷多次 的 a 。/a?/ 表示的是 0 次或者 1 次 a 。

以上 3 个规则是正则表达式的核心规则,所有的其他规则都是基于以上 3 个规则的语法糖。

我最开始学习正则表达式的时候非常害怕就是因为我被太多的语法糖震慑住了。

我们来先定义一下整数,整数就是至少 0-9 至少显示 1 次,也就是 1 到 无穷多个整数。可以用 /\d+/ 来表示,这里 \d 就是 0-9 的语法糖,另外一种写法就是 [0-9],评论区有人提到了,但是没有说为什么要用第二种语法糖。我也没有理解原因。

小数就是 “整数.整数” 这样的格式,所以是 /\d+\.\d+/,注意这里 . 前面添加了 \,是因为 . 本身表示任意字符,是一个语法糖,添加 \ 来表达 “.” 的本义。

同时表达整数或者小数的话,就是 ".整数" 这个部分可以省略,也就是整体可以有 0 次或者 1 次,那么就是 /\d+(\.\d+)?/

如果是科学计数法的话,就是在刚才的基础上再添加一个 “e 整数.整数” 的格式,且后一个 “.整数” 也可以忽略,就是

/\d+(\.\d+)?(E\d+)?/i ,这里最后的 i 后缀表示忽略大小写,ignore case

我们再把 正负号作为可选项添加到这个正则里面就可以得到最终的结论了

/^(\+|-)?\d+(\.\d+)?(E(\+|-)?\d+)?$/i

我发表这个帖子的目标就是想让懂正则的人能够把自己的正则炫出来,并能解释清楚,希望不懂正则的人能够理解这种写法。因为我自己学正则的时候就很害怕,我会很希望能看见这样的帖子。