学习正则表达式时,你会从哪里开始?我正在寻找一套好的东西要学习,这样我就可以建立一个良好的基础。我不希望从记忆中知道一切,但如果我能够学到正确的东西 - 而且足够的东西 - 我可以在这方面有一个良好的开端。
请给我你的建议,这样我就可以有效地开始学习regexpressions。
答案 0 :(得分:3)
答案 1 :(得分:2)
我在本网站上了解到我所知道的正则表达式: http://www.regular-expressions.info/
它真的很丰富,易于理解,最重要的是,免费!它是由Regex专家制作的,所以没有什么可担心的。 :)
答案 2 :(得分:2)
就个人而言,我从the docs
学习了Regex(python正则表达式)对于正则表达式测试,我主要使用Rubular,它允许您根据文本块快速检查正则表达式,以查看它删除的内容。它还支持分组,这对于测试应用程序非常有用。
虽然正则表达式有几种约定,但最常见的是perl样式,由Perl,Python,Ruby等使用。
干杯。
答案 3 :(得分:1)
如果您可以遵循c语法文档,那么我强烈推荐来自“ed”程序的unix手册页,如果您无法访问unix / linux,它们也可以在网上找到。这是所有正则表达式变体(针对各种编程语言)的开始。一旦你挥之不去,你就可以轻松地将自己应用于任何变体。 unix / linux上的“man ed”,读取正则表达式部分。或者在谷歌上搜索“man ed”。
答案 4 :(得分:0)
正则表达式实际上是由DFA,确定性有限自动机实现的,并且在数学上也可以被描述为非确定性有限自动机。这些模型非常简单,我认为你只需要学习基础知识来获得它背后的逻辑:
我们有一个符号A的字母表,例如A = {a,b}或在实际应用中有很多不同的字符,例如UTF-8。然后我们在图中有节点,其中一个是起始节点。
可以使用消耗一个输入字符的转换连接这些节点,然后转到新节点(或同一节点)。
因此,我们想要一个正则表达式,它需要3 a然后1 b才能匹配,它可以被视为以下DFA:
start-> () -a-> () -a-> () -a-> () -b-> end
如果我们允许循环,那么我们得到以下类型的正则表达式* *我们可以通过使用a来保持在同一节点中。看看http://en.wikipedia.org/wiki/Deterministic_finite_automaton
我不认为陷入不同编程语言和文本编码的实现细节是明智的。最好先了解逻辑,然后其余的只是细节。
我会先从例如pythons正则表达式文档在学习理论之前开始在mathematica中通过部分进行集成而不了解微积分,它看起来像魔术,但实际上它并不是很难,而是学习和理解它非常优雅和有趣!
答案 5 :(得分:0)
正则表达式的语法在编程语言之间通常是一致的。但它们的实施方式因语言而异。由ridgerunner提到的掌握正则表达式是一个很好的起点。