我想用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, "");
但代码将在第一个和最后一个方括号之间全部删除,因此结果如下:
你好在越南
我该如何解决?
答案 0 :(得分:5)
.*
贪婪,因此您的表达式会在[
和]
之间匹配尽可能多的字符 - 包括许多其他[
和]
秒。
您可以通过以下两种方式解决此问题之一:
添加?
。这使*
不贪婪:.*?
在匹配]
之前将匹配为少数字符。
将.
替换为[^]]
,这样只会让表达式与]
和[
之间的非]
字符匹配。
答案 1 :(得分:1)
只需用空字符串
替换[...]
之间的所有内容
\s+\[[^\]]*\]
或使用Non-greedy
方式,但请先阅读✽ Want to Be Lazy? Think Twice.
\s+\[(.*?)\]
这是demo
答案 2 :(得分:0)
要匹配文字以替换使用:
\s+\[.*?]
作为C#String,这是:
@"\s+\[.*?]"
如果你在字符串前面使用@,则不需要在C#中转义它。