【问题标题】:How do I test if a replacement string needs to be a regular expression?如何测试替换字符串是否需要是正则表达式?
【发布时间】:2014-07-06 22:54:00
【问题描述】:

我搜索...然后搜索...我不是说Can I test if a regex is valid,我想测试replacement 字符串是否需要在Regex.Replace 中使用,或者是一个简单的String.Replace 将给出我的结果相同,只是更快。

即。对于给定的字符串replacement,我是否需要使用

Regex.Replace(input, replacement)    

而不是

string.Replace(input, replacement)

这假设(总是一个好主意)string.Replace 比 Regex.Replace 更快。

编辑:是的,一个好主意。不是。 Regex.IsMatch vs string.Contains 一个。

将这里作为过早优化的示例。与生活中的大多数事情一样——“视情况而定”。我认为,如果你有成百上千的模式,那么可能值得筛选出简单的模式,这取决于存在简单模式的可能性。对于可管理的模式数量,只需执行 Regex。

【问题讨论】:

  • 你的问题是什么?
  • “我想测试一个替换字符串是否需要在 Regex.Replace 中使用,或者是一个简单的 String.Replace 是否会给我相同的结果,只是更快。”怎么样?
  • 您是要动态计算这个吗? IE,我可以给你任何输入字符串,你想在代码中确定,好的选择string.Replace,然后我给你另一个字符串,你确定使用Regex.Replace,因为在这种情况下它更快?或者您是在问哪个更快(句号)?
  • 你不能设置一些计时器并轻松测试一下吗?
  • @CADbloke HOW? 不是问题。它意味着为我写如果。更好的是,您编写测试用例并在此处询问是否有问题。

标签: c# .net regex string


【解决方案1】:

您可以放心地假设如果 Regex.Escape(pattern) == pattern 那么您可以使用一个好的旧字符串替换。

但这是微优化...所以要衡量这是否真的值得额外的复杂性。我敢打赌正则表达式引擎可以解决这个问题,但我可能错了:无论哪种方式,都不要在这种情况下凭空做出假设,而是用措施来支持它们。

【讨论】:

    猜你喜欢
    • 2012-06-02
    • 2013-08-01
    • 1970-01-01
    • 2018-07-13
    • 2017-02-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多