C#正则表达式花费了太多时间

时间:2017-05-13 13:37:44

标签: c# regex

我有一个正则表达式,即

[A-Z]\w*(\s+([A-Z0-9]\w*|-[a-z]?|and|or|of|of the))*(?=\s*,?\s*\(?\s*as defined below\s*\)?)

我在Word文档上运行它对我来说很好。但是把它改成

[A-Z]\w*(\s*([A-Z0-9]\w*|-[a-z]?|and|or|of|of the))*(?=\s*,?\s*\(?\s*as defined below\s*\)?)

只需将 \ s + 更改为 \ s * 需要花费太多时间。并且即使在10分钟内也不会返回结果(等待更多是徒劳的)。甚至

[A-Z]\w*(\s([A-Z0-9]\w*|-[a-z]?|and|or|of|of the))*(?=\s*,?\s*\(?\s*as defined below\s*\)?)

也不会在不到10分钟的时间内给出结果。

此外我正在测试它

Registration Rights has agreed not to
 exercise such rights until after expiration of the Lock-Up Period (as defined below)

并期待Lock-Up Period作为结果

1 个答案:

答案 0 :(得分:0)

请尝试使用并行编程,它将改变所有可用内核的工作负载。 将您的代码放在一个方法中并从并行调用该方法,如``

Parallel.Invoke(() => DoSomeWork(), () => DoSomeOtherWork());

请参阅
Parallel Programming