所以这是我使用C#从特定字符串中提取CSS的正则表达式模式:
(([\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]*\})?
我的示例文字是:
查看标签#BrandPositioning #DesignThinking #DesignandInnovation #DigitalCustomerExperience #DigitalCustomerInnovation #DigitalDesignDigitalDesignandInnovation #DigitalDesignDelivery #DigitalDesignRealization #DigitalEnterpriseExperience #DigitalServiceDesign #ExperienceDesign #Fjord #GraphicDesign#LivingServices#ServiceandExperienceDesign#ServiceDesign#UserCenteredThinking
检查错误后
表达式执行时间超过250毫秒
这是为什么?以及如何治愈?。
答案 0 :(得分:1)
你所经历的是灾难性的回溯,它的出现是因为你的模式有多余的部分。
您有两种选择:
似乎导致回溯的原因是((\.|\#|\[)[^\s,\.\#\|]+)*
您可以转换为((\.|\#|\[)[^\s,\.\#\|]*)