gpt4 book ai didi

regex - 为什么这个正则表达式更快?

转载 作者:行者123 更新时间:2023-12-03 15:00:28 25 4
gpt4 key购买 nike

我正在用 C# 编写各种 Telnet 客户端,我必须解析的部分内容是 ANSI/VT100 转义序列,特别是那些用于颜色和格式的转义序列(详细信息 here)。

我拥有的一种方法是找到所有代码并删除它们,因此如果需要,我可以在没有任何格式的情况下呈现文本:

    
public static string StripStringFormating(string formattedString)
{
if (rTest.IsMatch(formattedString))
return rTest.Replace(formattedString, string.Empty);
else
return formattedString;
}

我是正则表达式的新手,有人建议我使用它:
static Regex rText = new Regex(@"\e\[[\d;]+m", RegexOptions.Compiled);

但是,如果由于服务器错误导致转义码不完整,则此操作失败。所以有人建议这样做,但我的 friend 警告说它可能会更慢(这个也符合我以后可能会遇到的另一个条件 (z)):
static Regex rTest = 
new Regex(@"(\e(\[([\d;]*[mz]?))?)?", RegexOptions.Compiled);

这不仅有效,而且实际上更快并减少了对我的文本渲染的影响。有人可以向正则表达式新手解释,为什么? :)

最佳答案

你真的想两次运行正则表达式吗?没有检查(坏我)我会认为这会很好用:

public static string StripStringFormating(string formattedString)
{
return rTest.Replace(formattedString, string.Empty);
}

如果是这样,您应该会看到它的运行速度提高了两倍...

关于regex - 为什么这个正则表达式更快?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4870/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com