如何替换2个字符之间的文字?

Bra*_*eVN 0 .net c# regex string

我想用Visual C#删除文本中2个字符之间的内容.
这是一个例子:

鉴于:嗨[大家],我22岁,我是越南科技大学的学生
结果:嗨,我22岁,我是越南的学生

我用这个语法

string input = "Hi [everybody], I'm 22 years old, I'm a student [at a University of Technology]";
string regex = "(\\[.*\\])";
string output = Regex.Replace(input, regex, "");
Run Code Online (Sandbox Code Playgroud)

但代码是在第一个和最后一个方括号之间删除所有,所以这是结果:

你好在越南

我该如何解决?

Raw*_*ing 5

.*是贪婪的,所以你的表达式在a [和a 之间匹配尽可能多的字符]- 包括许多其他[s和]s ..

您可以通过以下两种方式解决此问题:

  • 添加一个?.这使得* 贪婪:在匹配之前.*?将匹配尽可能少的字符].

  • 更换.[^]],这只会让表达式匹配非]字符其间的[].