gpt4 book ai didi

c# - 使用正则表达式有效地测试 "EndsWith"

转载 作者:可可西里 更新时间:2023-11-01 08:54:34 26 4
gpt4 key购买 nike

我需要构建一个 Regex(.NET 语法)来确定字符串是否以特定值结尾。具体来说,我需要测试文件是否具有特定扩展名(或一组扩展名)。

我尝试修复的代码使用的是:

.*\.(png|jpg|gif)$

在我的场景中,对于失败的匹配来说速度非常慢(可能是由于回溯。

只需删除开头的 .*(这很好,因为 API 仅测试匹配项并且不提取任何内容)使正则表达式更加高效。

感觉还是很低效。我在这里遗漏了什么明显的东西吗?

不幸的是,我无法控制有问题的 API,所以我需要一个正则表达式来执行此操作,尽管我通常不会认为正则表达式是完成这项工作的正确工具。

我还使用 RegexOptions.RightToLeft 进行了一些测试,发现使用 ^.*\.(png|jpg|gif )$,但我找不到在正则表达式本身的字符串中指定 RightToLeft 选项的方法,所以我认为我无法使用它。

最佳答案

我无权访问 C#,所以我不能尝试这个...但是您应该能够通过强制引擎首先找到字符串的末尾,然后匹配扩展名来避免过多的回溯:

$(?<=\.(gif|png|jpg))

不过,我不确定回溯对性能的影响。

关于c# - 使用正则表达式有效地测试 "EndsWith",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2081555/

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