2

对我来说,这是关于正则表达式的最重要的问题,可能对其他一些人来说也是如此。

我很少使用正则表达式。但是,每当我不得不处理一些复杂的正则表达式时,我发现甚至很难找到要搜索的单词。

除了正则表达式之外,我想不出编程中我可能会被困在搜索中的任何其他事情。这些领域的许多问题,您的知识/技能太少,只需很少的搜索即可轻松解决。但在正则表达式的情况下无法做这件事

例如我有一个有效的表达

Select * from sale  where Quantity < '10'  and Date <= curdate() and
Date >= date_sub(curdate(), interval 3 month)

我已允许用户修改此查询,但修改后我想验证用户除了关系运算符和关系运算符之后的值之外什么都没有更改。正则表达式就像

Select .+ from sale  where Quantity [<|>|=|(<=)|(>=)] .+  and Date 
[<|>|=|(<=)|(>=)] .+ and Date [<|>|=|(<=)|(>=)] (string not containing any join)

这个具体问题已经解决了。实际问题是关于正则表达式的一般问题。

对于这样的问题,我只能想到两种解决方案

  1. 具备良好的正则表达式知识/技能/概念
  2. 去论坛问问。

在所有其他情况下,我通常在不阅读教程等的情况下从搜索中获得帮助,除了一些非常典型/独特/新型的技术。但是对于正则表达式,搜索似乎不是可靠的解决方案,因为它们大多是唯一的。是吗?如何?

这并不意味着我反对阅读教程。我为 Regex 做自己,也许比其他事情更多(因为我们在课程中没有充分阅读它们)但仍然面临问题

4

3 回答 3

1

好吧,按照你的推理,有人可能会争辩说不可能搜索 SQL 表达式,因为数据库模式是唯一的,所以不会有任何命中。然而它实践它运作良好。

您必须寻找概念和想法,而不是寻找非常具体问题的实际解决方案。

当然,您必须了解基础知识。如果您无法命名您正在寻找的东西,那么搜索它们是不可能的。

对于您的示例,这是一个实用的搜索:https ://www.google.co.uk/search?q= regexp+match+either+or 第一次点击:“Regex Tutorial - Alternation with The Vertical Bar”

于 2012-09-22T16:41:15.833 回答
1

你可以做三件事:

  1. 为您的特定正则表达式风格打开正则表达式备忘单。
  2. 使用工具为您提供即时反馈并“改进”表达式,而不是尝试一次构建所有表达式。我使用Regexpal cuz,它是免费的。
  3. 编写您自己的测试台来试验不同的功能。
于 2012-09-22T16:41:19.747 回答
1

您可以轻松地提出有关编程问题的问题,因为您了解基本概念:循环、函数、列表、哈希、模块、字符串、输入、输出、文件 - 您了解基本词汇,因此您知道如何提出编程问题。

但是您并不是从无到有地获得这些知识——在某一时刻,您必须学习基础知识。这很容易忘记,因为您认为它们是理所当然的。

使用正则表达式,可以学习许多新概念,新词汇。突然之间,出现了新词,如组、交替、锚点、懒惰和贪婪的量词、环视、原子分组、捕获等等……你不会绕过学习这些新词汇,所以你可以提出有意义的问题。

熟悉基本概念并不难。使用一个体面的教程(http://www.regular-expressions.info),用你最喜欢的语言玩正则表达式,使用在线正则表达式测试器......就我个人而言,我几乎从每天使用 RegexBuddy 中学到了关于正则表达式的所有知识. 来自 StackOverflow。

你可以在这里问基本的正则表达式问题,每天都有很多。通常只有那些很明显海报没有在他们身上付出一点努力的人才会被否决。

于 2012-09-22T18:11:07.490 回答