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

本文关键字:字符 之间 文本 2个 何替换 替换 | 更新日期: 2023-09-27 18:18:29

我想用Visual c#删除文本中两个字符之间的内容。
下面是一个例子:

给定:嗨[大家],我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, "");

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

Hi in Vietnam

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

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

您可以通过以下两种方式之一修复此问题:

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

  • .替换为[^]],这将只允许表达式匹配[]之间的非]字符。

[...]之间的内容替换为空字符串

's+'[[^']]*']

这是在线演示

还是用Non-greedy的方式先读一遍?三思而行。

's+'[(.*?)']

要匹配要替换的文本,请使用:

's+'[.*?]

作为c#字符串,这是:

@"'s+'[.*?]"

如果你在字符串前面使用@,你不需要在c#中转义。