C#。最快的正则表达式匹配任何字符串

时间:2011-02-28 20:37:46

标签: c# regex

非常简单。什么是最快的正则表达式将返回任何输入的真实?

编辑:为什么下来投票?似乎是一个非常合理的问题。我使用一个带有正则表达式过滤器的函数,我想知道什么能使它最快地匹配所有内容。 “不使用正则表达式”不是一个答案。

4 个答案:

答案 0 :(得分:4)

class FastestRegex
{
    public static readonly Regex RE = new Regex("", RegexOptions.Compiled);
}

答案 1 :(得分:1)

我会说它必须像

.*?

将检查与任何字符的匹配,但由于惰性运算符,根本不匹配任何字符串。我想它会在检查第一个字符之前返回。这假设空字符串对于所有输入都不返回true。

答案 2 :(得分:1)

我猜测空字符串""或输入开始"^"会导致任何字符串的最快(正)匹配。

你应该自己尝试一下:运行一些快速测试,模式"^"通常比Oracle 1.6 JRE上的""快,但是在Mono 2.4上,反之亦然。在这两种情况下,.*? 方式较慢。

但是再次:在你自己的系统上测试一些东西。

答案 3 :(得分:0)

没有最快的正则表达式永远不会运行正则表达式。因此,最快的正则表达式是实际运行的正则表达式。 /[\S\s]?/或者,我猜这更快/.?/s

Addon - 虽然/^/在{2}中有更快的成功,但在perl循环中的速度更快。但是,预编译所有正则表达式首先会使它们全部减慢5倍。去图。也许是因为它太简单了。