gpt4 book ai didi

c# - 如何删除多对括号之间的文本?

转载 作者:行者123 更新时间:2023-12-03 18:30:08 27 4
gpt4 key购买 nike

我想删除多对括号中的每对之间包含的文本。如果字符串中只有一对括号,则下面的代码可以正常工作:

var text = "This (remove me) works fine!";

// Remove text between brackets.
text = Regex.Replace(text, @"\(.*\)", "");

// Remove extra spaces.
text = Regex.Replace(text, @"\s+", " ");

Console.WriteLine(text);

This works fine!



但是,如果字符串中包含多组括号,则会删除过多的文本。 Regex 表达式删除 FIRST 左括号和 LAST 右括号之间的所有文本。
var text = "This is (remove me) not (remove me) a problem!";

// Remove text between brackets.
text = Regex.Replace(text, @"\(.*\)", "");

// Remove extra spaces.
text = Regex.Replace(text, @"\s+", " ");

Console.WriteLine(text);

This is a problem!



我很难过 - 我确定有一个简单的解决方案,但我没有想法......

帮助最受欢迎!

最佳答案

你有两种主要的可能性:

  • .*.*?即匹配尽可能少,从而匹配 )越早越好:
    text = Regex.Replace(text, @"\(.*?\)", "");
    text = Regex.Replace(text, @"\s{2,}", " "); // let's exclude trivial replaces
  • .*[^)]*即匹配除 ) 之外的任何符号:
    text = Regex.Replace(text, @"\([^)]*\)", "");
    text = Regex.Replace(text, @"\s{2,}", " ");
  • 关于c# - 如何删除多对括号之间的文本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42460156/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com