|
1
18
不,不要避免使用正则表达式。它们实际上是一个非常漂亮的小工具,如果你明智地使用它们,可以节省你很多工作。 你什么 做 需要避免的是尝试将它用于所有事情,在正则表达式变得更温和和不那么倾心之前,这些新表达式似乎会遇到一种不适:—) 例如, 不要 使用它来验证电子邮件地址。验证电子邮件地址的方法是向其发送一封电子邮件,其中包含一个链接,收件人必须单击该链接才能完成“事务”。 有数以十亿计的有效电子邮件地址(根据RFC)背后没有物理电子邮件接收器。这个 只有 确定有接收者的方法是发送一封电子邮件,并等待其收到并采取行动的确凿证据。 如果我发现自己在写一个超过60个字符的正则表达式,我会后退一步,看看是否有更可读的方法。同样地,如果我写了一个正则表达式,一周后又回来,并且不能立即识别它的作用,我会考虑替换它。这段话当然是由我的意见组成的,但它们对我很有帮助。 |
|
2
6
正则表达式是一种工具。它们非常适合某些任务,而不适合其他任务。像任何工具一样,当它们是适合工作的工具时,使用它们。不要仅仅因为有人说他们很坏就避开他们。学习如何使用它们,然后你可以自己决定,而不是依赖别人的教条。 |
|
|
3
2
如果您选择使用更通用的分析方法,例如
pyparsing
或
PLY
你永远不会
要求
正则表达式(只能匹配与此类常规分析器匹配的语言的一小部分)。但是,像在
当然,如果在更简单、高度优化和简洁的工具是完美的解决方案的情况下使用非常通用的工具,那么性能可能会受到很大的影响——在许多常见的情况下,代码的大小可能会“放大”到非常大。但是如果你不介意让程序大一倍,慢一倍,并且决心不惜一切代价避免正则表达式,那么 可以 那样做。
另一方面,如果您的主要关注点是可读性(也是一个可以理解和值得称赞的关注点),那么
|
|
|
4
1
只是为了比较一下,这里我的版本电子邮件格式检查没有与regexp(与测试案例)和一个可读的regexp提供给我作为替代(尽管在它被接受后发送电子邮件,是个好主意):
编辑:从这个古老的代码中清除了regex过滤器功能,为基于@detly link的更宽松版本编辑。很好,在发送确认邮件之前先为我检查一下表格。最后在注释中输入255个字符的长度限制检查。 此代码不接受普通的a@b作为有效的电子邮件地址,但接受我@某处。另一件事是它取决于isalpha返回的内容。所以这个来自ideone.com的输出没有接受斯堪的纳维亚语,即使它们现在是有效的。在我的家庭计算机上运行时,这些都被接受。即使存在编码行,也是如此。 |
|
|
5
0
(删除了一个据称是“官方”表达式的正则表达式,但事实上在其声称来自的RFC中找不到它。) This Regex可能很有趣,因为它试图精确匹配旧版本的Internet邮件标准中提供的电子邮件地址语法。 |
|
|
6
-1
正则表达式可能是提取/验证电子邮件地址的正确工具… 要从原始文本中提取一个或多个电子邮件地址:
要查看单个文本是否为有效电子邮件:
|
|
|
DotFX · RegEx捕获关键字前但括号后的所有内容 1 年前 |
|
|
Andrus · 如何在sql中查找第二个匹配项 1 年前 |
|
|
iato · 确保正则表达式不从命名材料中的数字中提取 1 年前 |
|
|
vr8ce · 非成对标记中特定字符的正则表达式 1 年前 |
|
|
MARTIN · 交换第一个和最后一个单词,反转所有中间的字符 1 年前 |
|
|
Carsten · 使用最近的搜索模式更改文本块 1 年前 |