使用或不使用正则expression式?

我刚刚问了一个关于使用正则expression式来允许-90.0到+90.0之间的数字的问题。 关于如何实现正则expression式,我得到了一些答案,但大多数答案也提到,如果不使用正则expression式会更好地处理,或者使用正则expression式将会是过度的。 那么如何决定何时使用正则expression式,何时不使用正则expression式。 有没有可以遵循的检查清单?

正则expression式是用于基于字符的testing的文本处理工具。 更正式地说,正则expression式擅长处理常规语言,在其他任何事情上都很糟糕。

在实践中,这意味着正则expression式不适合需要在超出字符级别的文本中发现意义语义 )的任务。 这将需要一个完整的parsing器。

在您的具体情况中:识别文本中的数字是正则expression式擅长的练习(十进制数可以使用常规语言进行简单描述)。 这适用于angular色级别。

但是,要求知道其数值(即其语义)的更高级的东西需要解释。 正则expression式在这方面是不好的。 所以在文本中find一个数字很容易。 find一个大于11但小于1004(或可以被3整除)的数字是很难的:它要求识别数字的含义

我会说,正则expression式是最有效的string。 对于其他数据types,对该数据types的操作通常会更加直观,并提供更好的结果。

例如,如果你知道你正在处理DateTime,那么你可以使用Parse和TryParse方法将不同的格式,它通常会比你自己的正则expression式更可靠。

在你的例子中,你正在处理数字,所以相应地处理它们。

正则expression式非常强大,但它不是读取和debugging的最简单的代码。 当另一个可靠的解决scheme即将到来时,你应该去做那个。

如果没有含义是循环的或者是钝的,当你有一个包含以正则语言结构化的信息的string时,你应该使用正则expression式,并且你想把这个string变成一个对象模型。

答案很简单:

如果你可以解决你的问题没有正则expression式(只是通过string函数),你不使用正则expression式。 正如我在一本书中所说:正则expression式是对计算机的暴力。

如果使用语言string函数会很复杂,请使用正则expression式。

RegEx的基本用例: –

  1. 您需要“关键值对”(Key Value Pairs) – 密钥和值都embedded在其他嘈杂文本中 – 否则无法访问或隔离。

  2. 您需要通过循环多个文档来自动提取这些值。

  3. 当您通过文本进行parsing时,可能会发现键值对的数量和组合。