C#正则表达式中环顾效率.如果可以,我应该避免使用它们吗?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了C#正则表达式中环顾效率.如果可以,我应该避免使用它们吗?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1083字,纯文字阅读大概需要2分钟。
内容图文
![C#正则表达式中环顾效率.如果可以,我应该避免使用它们吗?](/upload/InfoBanner/zyjiaocheng/688/1dd74a0c91da4de589d8e78a3be5b747.jpg)
大家!我对正则表达式还很陌生,但是我很喜欢它们,很多!
如果可以的话,请称我为nitpicky,但我真的很想知道如果我可以选择的话,是否应该避免使用前行和后行.
例如,下面的两个命令执行相同的操作,一个命令使用lookbehind,另一个则不使用.
the_str = Regex.Replace(the_str, @"(;|!|\?) \.{3}", "$1...");
the_str = Regex.Replace(the_str, @"(?<=(;|!|\?)) \.{3}", "...");
您会使用哪一个?哪个更有效?
感谢您的回答!
解决方法:
我在本地进行了测试,而使用后向跟踪的方法要慢25%.
我使用先行而不是先行测试的另一种变体仅慢了10%:
s = Regex.Replace(s, @"(;|!|\?) (?=\.{3})", "$1");
我认为性能差异不足以建议始终避免环顾四周.如果您认为它使代码更具可读性,请使用它们.仅当性能分析表明您遇到性能问题并且正则表达式成为瓶颈时,才优化性能.
作为参考,我测试的字符串是“等等; … foo …; bar bar?…”重复了1000次,而我每次测试重复了100次.
0.944s No lookarounds Regex.Replace(s, @"(;|!|\?) \.{3}", "$1...") 1.027s Look ahead Regex.Replace(s, @"(;|!|\?) (?=\.{3})", "$1") 1.210s Look behind Regex.Replace(s, @"(?<=(;|!|\?)) \.{3}", "...") 1.124s Both Regex.Replace(s, @"(?<=(;|!|\?)) (?=\.{3})", "")
内容总结
以上是互联网集市为您收集整理的C#正则表达式中环顾效率.如果可以,我应该避免使用它们吗?全部内容,希望文章能够帮你解决C#正则表达式中环顾效率.如果可以,我应该避免使用它们吗?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。