regex – 如何写更可维护的正则表达式?

我开始觉得使用正则表达式会降低代码的可维护性。正则表达式的简洁和力量是有害的。 Perl化合物这种副作用像认操作符。

我有一种习惯,记录正则表达式,至少有一个句子给出基本意图和至少一个例子。

因为正则表达式被构建,我觉得绝对必要评论表达式中每个元素的最大成分。尽管这样,即使我自己的正则表达式让我抓我的头,好像我正在读克林贡。

你有意地贬低你的正则表达式吗?你能把更短,更强的分解成更简单的步骤吗?我放弃了嵌套正则表达式。是否有正则表达式构造,你避免由于可维护性问题?

不要让这个例子云问题。

如果下面的Michael Ash有某种错误,你会有任何前景做任何事情,但抛弃它完全?

^(?:(?:(?:0?[13578]|1[02])(\/|-|\.)31)\1|(?:(?:0?[13-9]|1[0-2])(\/|-|\.)(?:29|30)\2))(?:(?:1[6-9]|[2-9]\d)?\d{2})$|^(?:0?2(\/|-|\.)29\3(?:(?:(?:1[6-9]|[2-9]\d)?(?:0[48]|[2468][048]|[13579][26])|(?:(?:16|[2468][048]|[3579][26])00))))$|^(?:(?:0?[1-9])|(?:1[0-2]))(\/|-|\.)(?:0?[1-9]|1\d|2[0-8])\4(?:(?:1[6-9]|[2-9]\d)?\d{2})$

每个请求的确切目的可以使用Ash先生的链接上面找到。

匹配01.1.02 | 11-30-2001 | 2/29/2000

非比赛02/29/01 | 13/01/2002 | 11/00/02

我通常只是试图将所有我的正则表达式调用包装在自己的函数中,有一个有意义的名称和一些基本的注释。我喜欢把正则表达式看作是一种只写的语言,只有编写它的人才能读取(除非它很简单)。我完全期望有人需要可能完全重写表达式,如果他们必须改变其意图,这可能是更好地保持正则表达式训练活着。

相关文章

正则替换html代码中img标签的src值在开发富文本信息在移动端...
正则表达式
AWK是一种处理文本文件的语言,是一个强大的文件分析工具。它...
正则表达式是特殊的字符序列,利用事先定义好的特定字符以及...
Python界一名小学生,热心分享编程学习。
收集整理每周优质开发者内容,包括、、等方面。每周五定期发...