如何替换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
.*
是贪婪的,因此您的表达式在[
和]
之间匹配尽可能多的字符-包括许多其他[
s和]
s.
您可以通过以下两种方式之一修复此问题:
-
添加
?
。这使得*
不贪婪:.*?
将在匹配]
之前尽可能地匹配少数字符。 -
将
.
替换为[^]]
,这将只允许表达式匹配[
和]
之间的非]
字符。
将[...]
之间的内容替换为空字符串
's+'[[^']]*']
这是在线演示
还是用Non-greedy
的方式先读一遍?三思而行。
's+'[(.*?)']
要匹配要替换的文本,请使用:
's+'[.*?]
作为c#字符串,这是:
@"'s+'[.*?]"
如果你在字符串前面使用@,你不需要在c#中转义。