我见过的任何使用Regexes的代码都倾向于将它们用作黑盒:
在生产代码中使用这似乎不是一个特别好的主意,因为即使是很小的更改通常也会导致完全不同的正则表达式。
除了标准是永久的和不变的情况外,正则表达式是做事情的方式,还是尝试不同的方法更好?
发布于 2008-09-29 21:33:48
如果正则表达式很长且难以理解,使得它们很难维护,那么应该对它们进行注释。
许多正则表达式实现允许您在正则表达式中填充空格和注释。
请参阅https://www.regular-expressions.info/freespacing.html#parenscomment
和编码恐怖:Regular Expressions: Now You Have Two Problems
我所见过的任何使用正则表达式的代码都倾向于使用它们作为一个黑盒:
如果你所说的黑盒是指抽象,那就是所有的编程,试图抽象掉困难的部分(解析字符串),这样你就可以专注于问题域(我想匹配哪种类型的字符串)。
即使是一个很小的更改,通常也会导致一个完全不同的正则表达式。
这对任何代码都是正确的。只要您正在测试您的正则表达式以确保它与您期望的字符串匹配,最好使用单元测试,那么您应该对更改它们充满信心。
编辑:还请阅读Jeff对此答案的关于生产代码的评论。
发布于 2008-09-29 21:31:37
Obligatory.
这真的要归结为正则表达式。如果是这个庞大的整体表达式,那么是的,这是一个可维护性问题。如果你能简洁地表达它们(也许是通过分解它们),或者如果你有好的注释和工具来帮助你理解它们,那么它们就可以成为一个强大的工具。
发布于 2008-09-29 21:35:19
我不知道您使用的是哪种语言,但是Perl -例如-支持x
标志,所以除非转义,否则正则表达式中的空格将被忽略,所以您可以将其分成几行,并对所有内容进行内联注释:
$foo =~ m{
(some-thing) # matches something
\s* # matches any amount of spaces
(match another thing) # matches something else
}x;
这有助于使长正则表达式更具可读性。
https://stackoverflow.com/questions/150764
复制相似问题