我正在尝试使用正则表达式来消除特定字符之间的字符串,例如" ["和"]":
input = "There is a [blue] cloud on top of that [big] elephant";
desiredOut = "There is a cloud on top of that elephant"; // this is what i want
但如果我使用正则表达式替换" ["和"]"我删除了第一个和最后一个字符之间的所有内容:
string input = "There is a [blue] cloud on top of that [big] elephant";
string regex = "(\\[.*\\])" ;
string actualOut = Regex.Replace(input, regex, "");
actualOut = "There is a elephant" // this is what i get
有关如何删除中间分隔符之间的内容的任何线索?感谢。
答案 0 :(得分:2)
这种轻微的修改可以解决您的问题:
string regex = "\\[(.*?)\\]";
此位(.*?)
将匹配所有内容,但会尽可能少。
答案 1 :(得分:0)
var input = "There is a (blue) cloud on top of that(big) elephant";
var output = Regex.Replace(input, @" ?\(.*?\)", string.Empty);
这将完成工作
答案 2 :(得分:0)
你的正则表达式删除第一个[
和最后一个]
之间的所有内容的原因是因为默认情况下修饰符是贪婪的,即。它们匹配尽可能多的字母。
您可以像在其他答案中一样使用延迟匹配,也可以使用
string regex = @"\[[^\]]*\]"
这个正则表达式匹配左方括号,然后它需要除了一个右方括号,然后在右方括号处完成。
答案 3 :(得分:0)
要删除前导或尾随空格,您可以使用此
string actualOut = Regex.Replace(input, @"^\[[^\]]*\]\s+|\s+\[[^\]]*\]", "");