参考 - 这个正则表达式是什么意思?

52

这是什么?

这是一组常见的问答集合,也是一个社区维护的Wiki,欢迎每个人参与其中。

为什么会有这个?

受到了“给我代码”的问题和缺乏解释的差劣回答的困扰。此参考旨在提供链接到优质问答的资源。

范围是什么?

此参考适用于以下语言:

这可能涵盖范围过大,但这些语言共享相同的语法。针对特定功能,可以使用相应语言的标记,例如:

  • 什么是正则表达式平衡组?

1
我创建了一个元讨论,欢迎大家参与 >>> (http://meta.stackexchange.com/questions/228822/regex-reference-and-its-fate) - HamZa
1个回答

1199

Stack Overflow正则表达式常见问题解答

还可以在 标签详情页上找到许多常规提示和有用链接。


在线教程

量词

角色类别

转义序列

Anchors

锚点 匹配项 模式
^ 字符串开头 常见*
^ 行开头 常见m
$ 行结尾 常见m
$ 文本结尾 外的常见*
$ 字符串最后 *,D
\A 字符串开头 外的常见
\Z 文本结尾 外的常见
\Z 字符串最后
\z 字符串最后 外的常见
\b 单词边界 常见
\B 非单词边界 常见
\G 上一个匹配项的结尾 外的常见
术语 定义
字符串的开头 在字符串的最开始。
行的开头 在字符串的最开始,并且在非终止行终止符之后。
字符串的结尾 在字符串的最末尾。
文本的结尾 在字符串的最末尾,并且在终止行终止符处。
行的结尾 在字符串的最末尾,并且在行终止符处。
词边界 在一个单词字符之前没有单词字符,并且在一个非单词字符之前没有非单词字符。
上一个匹配的结尾 在先前设置的位置,通常是先前匹配结束的位置。
如果没有设置位置,则在字符串的最开始。
"Common" 指的是以下内容:
* 默认 | m 多行模式。 | D 仅以美元符号结尾模式。 分组

环顾四周

向前查找:(?=...):positive(?!...):negative 向后查找:(?<=...):positive(?<!...):negative 向后查找限制: 向后查找的替代方法: 温和贪婪模式

修饰语

其他:

常见任务

高级正则表达式技巧

特定口味信息

(除了标有*的链接外,本节包含非Stack Overflow链接。)

一般信息

(带有*标记的链接是非Stack Overflow链接。)

其他常见的文档资源:学习正则表达式,*Regular-expressions.info,*维基百科条目,*RexEggOpen-Directory Project DFA与NFA的区别 生成与正则表达式匹配的字符串 书籍:Jeffrey Friedl的精通正则表达式 何时使用正则表达式: 正则表达式的例子可能导致正则表达式引擎失败的情况:
- [为什么这个正则表达式会导致Java正则表达式引擎崩溃?](link1)
工具:测试器和解释器
(本节包含非Stack Overflow链接)
在线(*包括替换测试器,+包括分割测试器): - [Debuggex](链接1)(还有一个有用的正则表达式存储库)[javascript](链接2),[python](链接3),[pcre](链接4) - * [Regular Expressions 101](链接5) [php](链接6),[pcre](链接4),[python](链接3),[javascript](链接2),[java](链接10),[go](链接11),[c#](链接12),[rust](链接13) - [Regex Pal](链接14),[regular-expressions.info](链接15) [javascript](链接2) - [Rubular](链接17) [ruby](链接18) ![图片](https://istack.dev59.com/D41QM.webp) [RegExr](链接19) ![图片](https://istack.dev59.com/D41QM.webp) [Regex Hero](链接20) [dotnet](链接21) - *+ [regexstorm.net](链接22) [dotnet](链接23) - *RegexPlanet: [Java](链接24) [java](链接10),[Go](链接26) [go](链接11),[Haskell](链接28) [haskell](链接29),[JavaScript](链接30) [javascript](链接2),[.NET](链接32) [dotnet](链接21),[Perl](链接34) [perl](链接35) [php](链接6) [PCRE](链接37),[Python](链接39) [python](链接3),[Ruby](链接41) [ruby](链接18),[XRegExp](链接43) [xregexp](链接44) - [freeformatter.com](链接45) [xregexp](链接44) - *+[regex.larsolavtorvik.com](链接47) [php](链接6) PCRE和POSIX,[javascript](链接2)
离线: - Microsoft Windows:[RegexBuddy](链接50)(分析),[RegexMagic](链接51)(创建),[Expresso](链接52)(分析,创建,免费)
MySQL 8.0:进行了各种语法更改。特别注意在某些上下文中反斜杠的加倍。(此答案需要进一步编辑以反映差异。)

6
相关问题: 一个回答的问题,该回答以“你无法使用正则表达式解析[X]HTML。”开头。 - Peter Mortensen
Perl有更多的语法结构(例如(?(用于条件语句),但您可以阅读Perl官方文档来了解更多信息。 - user202729
1
看起来“工具”部分下的Refiddle现在指向了一些在线赌场网站。可能应该将其删除。 - ceiling cat
我认为关于 [tag:ruby] 的锚点部分是错误的,根据 这个链接 - ikegami

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接