C#正则表达式性能缓慢

C#正则表达式性能缓慢,c#,regex,C#,Regex,我对regex不熟悉。如何优化此正则表达式: private static readonly Regex rgx = new Regex(@"(.*)</([a-z]+)>([0-9.]+)<(.*)", RegexOptions.Compiled); 是导致性能问题的原因,因此我需要优化正则表达式 编辑:我最终使用了正则表达式 ([^<]*)</([a-z]+)>([0-9.]+)<(.*) ([^您的regexp有点容易发生灾难性的回溯。因为(.

我对regex不熟悉。如何优化此正则表达式:

private static readonly Regex rgx = new Regex(@"(.*)</([a-z]+)>([0-9.]+)<(.*)", RegexOptions.Compiled);
是导致性能问题的原因,因此我需要优化正则表达式

编辑:我最终使用了正则表达式

([^<]*)</([a-z]+)>([0-9.]+)<(.*)

([^您的regexp有点容易发生灾难性的回溯。因为
(.*)
在某些情况下可能与
重叠,如果您使用的是RegexOptions.Compiled

看一看


尝试删除RegexOptions。编译并查看是否更好。

您想使用正则表达式做什么?该正则表达式的具体问题是什么?请编辑您的帖子以添加该信息。一个问题,您为什么在0-9之后写一个点?点代表任何字符(新行除外),因此…块([0-9])+)相当于(++)…您需要定义“slow”还有你是如何使用它的。就它本身而言,这个正则表达式没有什么问题。@castarco:没有。这个点匹配一个文字点。它在一个字符类中。我看不到消除正则表达式的任何性能提高。Compiled你能举个例子吗?如果你不包括正则表达式对象的构造成本,我很确定比这更糟。
if (rgx.IsMatch(temp))
([^<]*)</([a-z]+)>([0-9.]+)<(.*)
</([a-z]+)>([0-9.]+)<
([^<]*)</([a-z]+)>([0-9.]+)<(.*)