0

学习正则表达式时,你会从哪里开始?我正在寻找一套好的东西来学习,这样我就可以建立一个良好的基础。我不希望从记忆中知道一切,但如果我能学到正确的东西——而且足够多——我可以在这方面有一个良好的开端。

请给我您的建议,以便我可以有效地开始学习正则表达式。

4

6 回答 6

3

从这里开始和结束:掌握正则表达式(第 3 版)

于 2012-09-20T01:16:07.880 回答
2

我在这个网站上学习了我知道的正则表达式: http ://www.regular-expressions.info/

它确实内容丰富,易于理解,最重要的是,免费!它是由正则表达式专家制作的,所以没有什么好害怕的。:)

于 2012-09-20T01:12:37.023 回答
2

就个人而言,我从文档中学习了 Regex(python regex)

对于正则表达式测试,我主要使用Rubular,它允许您快速检查正则表达式与文本块,以查看它删除的内容。它还支持分组,这对于测试应用程序非常有用。

虽然正则表达式有多种约定,但最常见的是 perl 样式,由 Perl、Python、Ruby 等使用。

干杯。

于 2012-09-20T02:31:30.210 回答
1

If you can follow c syntax documentation, then I'd highly recommend the unix man pages from "ed" program, which are also available on the net if you don't have access to unix/linux. This is where all the regex variants (for various programming languages) started. Once you swalled it you'll be able to easily apply yourself to any variant. "man ed" on unix/linux, read the regular expressions part. Or search for "man ed" on google.

于 2012-09-20T01:20:22.540 回答
0

正则表达式的语法在编程语言之间通常是一致的。但它们的实现因语言而异。掌握 ridgerunner 提到的正则表达式是一个很好的起点。

于 2012-09-20T03:45:52.133 回答
0

正则表达式实际上是由 DFA(确定性有限自动机)实现的,并且在数学上也可以描述为非确定性有限自动机。这些模型非常简单,我认为您只需要学习基础知识即可了解其背后的逻辑:

我们有一个由符号 A 组成的字母表,例如 A = { a,b } 或在实际应用程序中很多不同的字符,例如 UTF-8。然后我们在图中有节点,其中一个是起始节点。

这些节点可以使用消耗一个输入字符的转换连接,然后我们转到一个新节点(或同一个节点)。

所以假设我们想要一个正则表达式,它需要 3 a 然后 1 b 进行匹配,它可以被视为以下 DFA:

start-> () -a-> () -a-> () -a-> () -b-> end

如果我们允许循环,那么我们会得到以下类型的正则表达式 a*,我们可以通过使用 a 留在同一个节点中。看看http://en.wikipedia.org/wiki/Deterministic_finite_automaton

我认为陷入不同编程语言和文本编码的实现细节是不明智的。最好先了解逻辑,剩下的只是细节。

在学习理论之前,我会从例如 pythons regex 文档开始进行比较,在不了解微积分的情况下开始在数学中按部分进行积分,这看起来很神奇,但实际上它并不是很难,而是非常优雅和有趣学习和理解!

于 2012-09-20T02:43:03.700 回答