紧密匹配时正则表达式极其缓慢

时间:2014-11-19 11:23:27

标签: c# .net regex

我正在尝试修复一些正则表达式,它搜索名为" langtoken"的属性的html元素。以及其他排列,例如" langtoken_title"。如果我通过使用单词边界单独搜索langtoken,它会在大约0.2秒内从~1,750,000字符串返回结果,但是如果我省略单词边界来捕获langtoken_title属性,则会激活到95秒左右。

我最初的正则表达式是

<([^>\s]+) [^>]*langtoken([^>]*?(\\*)?/>|.*?<(\\*)?/\1>)

到目前为止,我的尝试已将其更改为

<([^>\s]+) [^>]*langtoken(?:\b|_)(?:[^>]*/>|.*?</\1>)

我应该注意,在被搜索的字符串(一个html文档)中,有1431个元素具有langtoken属性,只有5个langtoken_title属性。我认为这是导致问题的近距离比赛,但我不确定。

这是我第一次涉足正则表达式,任何帮助都会在创建更有效的表达方式时受到赞赏。

0 个答案:

没有答案