避免正则表达式[python]

kil*_*own 2 python regex

我想知道避免正则表达式是否是一个好主意.

实际上我在任何情况下都避免使用它,有些人一直在给我建议我不应该避免它,因为如果你知道什么意味着什么:

[]'|'\A\B\d\D\W\W\S\Z $*?...

它会很容易阅读,对吗?但我喜欢避免正则表达式,我会有一个更可读的代码.

当它更大时,它变得更难以辨认,例如:validators.py

email_re = re.compile(
    r"(^[-!#$%&'*+/=?^_`{}|~0-9A-Z]+(\.[-!#$%&'*+/=?^_`{}|~0-9A-Z]+)*"  # dot-atom
    r'|^"([\001-\010\013\014\016-\037!#-\[\]-\177]|\\[\001-011\013\014\016-\177])*"' #     quoted-string
    r')@(?:[A-Z0-9](?:[A-Z0-9-]{0,61}[A-Z0-9])?\.)+[A-Z]{2,6}\.?$', re.IGNORECASE)  # domain
Run Code Online (Sandbox Code Playgroud)

那么,我想知道一个不能避免正则表达式的理由?

pax*_*blo 18

不,不要避免使用正则表达式.它们实际上是一个非常漂亮的小工具,如果您明智地使用它们将为您节省大量工作.

什么,你需要避免试图使用它的一切,这似乎打击那些新的正则表达式,他们变得有点钢化玻璃和少一点迷恋:-)之前萎靡不振

例如,不要使用它来验证电子邮件地址.验证电子邮件地址的方式是向其发送电子邮件,其中包含接收者必须单击以完成"交易"的链接.

有数十亿的有效电子邮件地址(根据RFC),其后面没有物理电子邮件接收器.确定有接收方的唯一方法是发送电子邮件并等待证明其收到并采取行动的证据.

如果我发现自己正在编写一个比60个字符更多的正则表达式,我会退一步看看是否有更易读的方法.同样地,如果我写一个正则表达式并在一周后回来并且无法立即识别它的作用,我会考虑更换它.这个特别的段落当然包括我的意见,但他们对我很有帮助:-)

  • 我同意发送一封电子邮件以确认地址的存在是否很好,但检查输入的电子邮件地址是否无效是很好的.用户可能忘记了`@`,你可以检查它是否存在并给出错误.最好这样做而不是接受它并通过电子邮件发送消息失败.用户不知道为什么他没有收到他的电子邮件. (4认同)
  • @ vlad003 - 那么你只需在email_address中使用`if"@"...... - 在这种情况下,正则表达式就是矫枉过正.比这更复杂的事情,你要求麻烦...... (4认同)

Bry*_*ley 6

正则表达式是一种工具.它们非常适合某些任务而不适合其他任务.像任何工具一样,当它们是适合工作的工具时使用它们.不要只是避开它们,因为有人说它们很糟糕.学习如何使用它们,然后你可以自己决定,而不是依赖别人的教条.