使用或不使用正则表达式?

时间:2010-11-04 15:11:04

标签: regex

我刚刚问了这个question关于使用正则表达式允许数字介于-90.0和+90.0之间的问题。我得到了一些关于如何实现正则表达式的答案,但大多数答案还提到,如果不使用正则表达式或使用正则表达式会更好地处理它会有点过分。那么如何决定何时使用正则表达式以及何时不使用正则表达式。是否有可以遵循的检查清单?

5 个答案:

答案 0 :(得分:45)

正则表达式是基于字符的测试的文本处理工具。更正式地说,正则表达式擅长处理常规语言,而且几乎对任何其他语言都不好。

实际上,这意味着正则表达式不适合需要在超出字符级别的文本中发现含义语义)的任务。这需要一个完整的解析器。

在您的特定情况下:识别文本中的数字是正则表达式 good 的练习(使用常规语言可以简单地描述十进制数字)。这适用于角色等级。

但是,使用需要了解其数值(即其语义)的数字来处理更高级的东西需要解释。正则表达式很糟糕。因此,在文本中查找数字很容易。在文本中查找大于11但小于1004(或可被3整除)的数字很难:它需要识别数字的含义

答案 1 :(得分:3)

我想说正则表达式对字符串最有效。对于其他数据类型,对该数据类型的操作通常更直观,并提供更好的结果。

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

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

正则表达式非常强大,但它不是最简单的读取和调试代码。当另一个可靠的解决方案即将到来时,您可能应该采用这种方法。

答案 2 :(得分:2)

如果您的字符串包含以 regular language 结构化的信息,并且您希望将此字符串转换为对象,则应使用正则表达式模型。

答案 3 :(得分:0)

答案很简单:

如果您可以在没有正则表达式的情况下解决问题(仅使用字符串函数),则不要使用正则表达式。正如我在一本书中所说的那样:正则表达式是计算机上的暴力行为。

如果使用语言字符串函数很复杂,请使用正则表达式。

答案 4 :(得分:0)

RegEx的基本用例: -

  1. 您需要“键值对” - 键和值都嵌入在其他嘈杂的文本中 - 否则无法访问或隔离。

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

  3. 当您逐步解析文本时,可能会发现键值对的数量和组合。