C# 正则表达式错误:表达式的执行时间超过毫秒

C# 正则表达式错误:表达式的执行时间超过毫秒,c#,css,regex,C#,Css,Regex,这是我的正则表达式模式,用于使用C#从特定字符串提取CSS: 我的示例文本是: 查看标签#品牌定位#设计思维#设计创新#数字客户设计#数字客户体验#数字客户创新#数字设计#数字设计创新#数字设计交付#数字设计实现#数字企业体验#数字服务设计#经验设计#峡湾##生活服务#服务与体验设计#服务设计#以用户为中心的思考 经检查,错误为 表达式的执行时间超过250ms 为什么会这样?如何治疗?你所经历的被称为灾难性回溯,它的发生是因为你的模式有多余的部分 您有两个选择: 进行超前测试以避免对无用的输入

这是我的正则表达式模式,用于使用C#从特定字符串提取CSS:

我的示例文本是:

查看标签#品牌定位#设计思维#设计创新#数字客户设计#数字客户体验#数字客户创新#数字设计#数字设计创新#数字设计交付#数字设计实现#数字企业体验#数字服务设计#经验设计#峡湾##生活服务#服务与体验设计#服务设计#以用户为中心的思考

经检查,错误为

表达式的执行时间超过250ms


为什么会这样?如何治疗?

你所经历的被称为灾难性回溯,它的发生是因为你的模式有多余的部分

您有两个选择:

  • 进行超前测试以避免对无用的输入运行正则表达式
  • 简化你的正则表达式

导致回溯的原因似乎是
((\.\\\\\\\\\[)[^\s,\.\\\\\\\\\\\\\\\]+)*
,您可以将其转换为
(\.\.\\\\\\\\\\\[^\s,\.\\\\\\\\\\\\\\\\\\\\\\\\\\\\.]

这将受益于其他细节,例如编程语言,您正试图实现的目标。乍一看,您似乎试图从一些html中提取一些哈希标记?正则表达式可能不是最佳解决方案。@Chris我编辑了这个问题。我使用的是C#,正则表达式是从字符串中提取CSS您意识到了吗您的示例文本甚至没有一个css属性吗?@ThomasAyoub-Yup我是故意这么做的。我测试了字符串中有css属性的字符串,以及字符串中没有css属性的字符串。:-)您应该向我们展示您的C#代码您是否有其他用于捕获css选择器和属性的正则表达式模式?这只匹配第一个I存在#id和.class,而不是下一个#id和.classfollow@tjvg1991您能提供您的输入以便我更好地测试正则表达式吗?
(([\s]*\/\*[^\*]+\*\/)?((@media|@keyframes)[^{]+\{[\s]*)?(((\b(html|head|body|a|abbr|area|audio|b|base|blockquote|button|canvas|code|datalist|dialog|div)|em|embed|font|footer|form|h1|h2|h3|h4|h5|h6|header|hr|i|iframe|img|input|label|li|link|main|map|menu|meta|object|ol|optgroup|option|output|p|param|pre|section|select|span|strong|sup|table|textarea|tfoot|th|head|td|title|tr|u|ul|video|\*))\b)?((\.|\#|\[)[^\s,\.\#\|]+)*([:]{1,2}[^\s,]+)*((\s)|(\,)|(\+)|(\~)|(>)|(&telde;))*)+[\s]*\{[^}]+\}([\s]*\})?