我需要构建一个Regex(.NET语法)来确定字符串是否以特定值结尾.具体来说,我需要测试一个文件是否具有特定的扩展名(或一组扩展名).
我正在尝试修复的代码使用:
.*\.(png|jpg|gif)$
Run Code Online (Sandbox Code Playgroud)
这在我的场景中失败的比赛非常缓慢(可能是由于回溯.
简单地删除.*(这是因为API仅测试匹配并且不提取任何内容),这使得正则表达式更加高效.
它仍然感觉效率非常低.我错过了一些明显的东西吗?
不幸的是,我没有控制有问题的API所以我需要一个正则表达式才能做到这一点,即使我通常不认为正则表达式是适合这项工作的工具.
我也做了一些测试使用,RegexOptions.RightToLeft并发现我可以从我的测试用例中挤出更多的性能^.*\.(png|jpg|gif)$,但是我找不到RightToLeft在正则表达式字符串中指定选项的方法所以我不认为我可以使用它.