小编Now*_*ems的帖子

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

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

我正在尝试修复的代码使用:

.*\.(png|jpg|gif)$
Run Code Online (Sandbox Code Playgroud)

这在我的场景中失败的比赛非常缓慢(可能是由于回溯.

简单地删除.*(这是因为API仅测试匹配并且不提取任何内容),这使得正则表达式更加高效.

它仍然感觉效率非常低.我错过了一些明显的东西吗?

不幸的是,我没有控制有问题的API所以我需要一个正则表达式才能做到这一点,即使我通常不认为正则表达式是适合这项工作的工具.

我也做了一些测试使用,RegexOptions.RightToLeft并发现我可以从我的测试用例中挤出更多的性能^.*\.(png|jpg|gif)$,但是我找不到RightToLeft在正则表达式字符串中指定选项的方法所以我不认为我可以使用它.

c# regex

10
推荐指数
2
解决办法
2万
查看次数

标签 统计

c# ×1

regex ×1