我不确定杰夫是否会创造它,但这是开玩笑说那些说“哦,我知道我会用正则表达式!”的人。现在有two problems。我一直认为这意味着人们在非常inappropriate contexts中使用正则表达式。
但是,在什么情况下正则表达式真的是最好的答案?他们真正解决问题的最佳或唯一方法是什么问题?
答案 0 :(得分:4)
RexExprs适用于:
答案 1 :(得分:4)
它们可用于验证具有以下模式的任何内容:
所有这些都有模式,并且很容易通过RegEx验证。
它们很难用于具有逻辑而不是信用卡号码之类的模式,但它们仍可用于进行客户端验证。
那么最好的方法呢?
我确信我错过了很多其他案例。
答案 2 :(得分:0)
正则表达式是解析没有解析器(即XML)的文本的好方法我用它来为.htaccess文件或我的URL重写器项目{{3中的mod_rewrite语法创建解析器例如
答案 3 :(得分:0)
引用来自Jamie Zawinski的反Perl咆哮。我认为Perl曾经非常糟糕地使用正则表达式,但现在它似乎是许多程序的标准引擎。
但同样的情绪仍然适用。如果你不知道如何使用正则表达式,你最好不要尝试其他明智的东西,你也可以得到其中一个标签(见铜牌); o)
答案 4 :(得分:0)
它们适合匹配或查找采用非常特定和简单格式的文本。例如,“简单”是指不是嵌套的,而是小于整个html规范。
答案 5 :(得分:0)
它们主要用于高度结构化的文本解析。如果您使用了命名组(以及大多数成熟的正则表达式系统中的选项),那么您将拥有一种非常强大且清晰的方法来处理字符串。
这是一个例子。考虑netstat在不同的Linux操作系统的各种迭代中,netstat的版本可以返回不同的结果。有时候会有一个额外的列,如果有日期/时间格式,有时会有一个班次。正则表达式为您提供了一种使用单个表达式处理它的强大方法。结合命名组,您可以检索数据,而不是黑客,如:
1)分隔空格
2)好吧,netstat版本是X所以添加我需要在第5列之后的所有数组引用中添加1
3)好吧,netstat版本是Y所以我需要确保我使用多个数组引用作为日期信息。
YUCK。很容易在正则表达式中修复: - )