非常简单。什么是最快的正则表达式,可以对任何输入返回true?
编辑:为什么要踩?这似乎是一个非常合理的问题。我使用一个接受正则表达式过滤器的函数,我想知道什么能让它最快地匹配所有内容。"不使用正则表达式"不是一个答案。
非常简单。什么是最快的正则表达式,可以对任何输入返回true?
编辑:为什么要踩?这似乎是一个非常合理的问题。我使用一个接受正则表达式过滤器的函数,我想知道什么能让它最快地匹配所有内容。"不使用正则表达式"不是一个答案。
class FastestRegex
{
public static readonly Regex RE = new Regex("", RegexOptions.Compiled);
}
我认为它必须是类似于
.*?
这段代码将检查与任何字符的匹配,但由于懒惰操作符,它将不匹配任何字符串。我想它甚至在检查第一个字符之前就会返回。这是假设空字符串不会对所有输入返回true。
我猜空字符串""
或输入开头"^"
对于任何字符串都会得到最快(正)匹配结果。
然而你应该自己尝试:运行几个快速测试,模式"^"
在Oracle的1.6 JRE上通常比""
更快,但在Mono 2.4上则相反。在这两种情况下,.*?
速度要慢得多。
但是还是要在自己的系统上测试。
没有永远不运行正则表达式的最快正则表达式。因此,最快的正则表达式就是实际运行的那个。/[\S\s]?/
或者,我猜这个更快一些/.?/s
附加组件 - 有趣的事情/^/
在perl循环30百万次中略微更快。但是,预先编译所有的正则表达式会将它们全部减速5倍。想想为什么。也许因为它太简单了。