【问题标题】:How to remove a pattern from a string using Regex如何使用正则表达式从字符串中删除模式
【发布时间】:2013-11-03 13:06:09
【问题描述】:

我想从字符串中查找路径并删除它们 例如string1 = "'c:\a\b\c'!MyUDF(param1, param2,..) + 'c:\a\b\c'!MyUDF(param3, param4,..)...",我想要一个正则表达式来查找模式'[some path]'!MyUDF,并删除“[路径]”。 谢谢

编辑 例如输入 string1 ="'c:\a\b\c'!MyUDF(param1, param2,..) + 'c:\a\b\c'!MyUDF(param3, param4,..)"; 预期输出“MyUDF(param1, param2,...) + MyUDF(param3, param4,...)” 其中 MyUDF 是一个函数名,所以它只包含字母

【问题讨论】:

  • ! 总是在字符串中吗?
  • 请详细解释您的输入和预期输出。

标签: c# regex replace


【解决方案1】:

如果您正在处理文件路径,您想要的功能在 System.Path 中。

那里有很多方法,但这是它的特定目的之一。

【讨论】:

    【解决方案2】:
    input=Regex.Replace(input,"'[^']+'(?=!MyUDF)","");
    

    如果路径后面跟着!还有一些你可以使用的词

    input=Regex.Replace(input,@"'[^']+'(?=!\w+)","");
    

    【讨论】:

    • 虽然我不会赌上我的性命,因为这个问题问得太差了,我相信MyUDF 可以是任何字符串。
    • @neoistheone 确实..编辑了答案..虽然操作应该清楚这一点
    • 对不起。 MyUDF 只是一个函数名,所以只有字母。谢谢
    【解决方案3】:

    好的,如果! 始终按照您的建议在字符串中,则此正则表达式!(.*)?\( 将为您提供所需的内容。这是一个Regex 101 来证明它。

    要使用它,你可以这样做:

    var result = Regex.Replace(myString, @"!(.*)?\(");
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-03-22
      • 2013-05-23
      • 1970-01-01
      • 2021-01-17
      • 2014-06-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多