Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/264.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何使用C删除两个括号标记之间的所有内容#_C#_Regex - Fatal编程技术网

C# 如何使用C删除两个括号标记之间的所有内容#

C# 如何使用C删除两个括号标记之间的所有内容#,c#,regex,C#,Regex,输入:我发现[B]没有一种[B]方法可以这样做 输出结果将是:我找到了一种方法来实现这一点 我的代码: string input = "I found [B]not a[/B] a single way [B]to do[/B] doing this."; string regex = "\\[(.*?)\\]"; string output = Regex.Replace(input, regex, ""); Console.WriteLine(output); 因此,这是一个经过测试的解

输入:我发现[B]没有一种[B]方法可以这样做

输出结果将是:我找到了一种方法来实现这一点

我的代码:

string input = "I found [B]not a[/B] a single way [B]to do[/B] doing this.";

string regex = "\\[(.*?)\\]";
string output = Regex.Replace(input, regex, "");
Console.WriteLine(output);

因此,这是一个经过测试的解决方案,它可以工作:

  string output = Regex.Replace("I found [B]not a[/B] a single way [B]to do[/B] doing this.", @"\[.?\].*?\[\/.?\]", "");

怎么做?好的,诀窍是删除匹配之间的所有内容
[something][/something]
标记之间的文本表示为

这应该可以做到:

Regex.Replace("I found [B]not a[/B] a single way [B]to do[/B] doing this.", @"\[(.*?)].*?\[/\1]", "", RegexOptions.IgnoreCase);
分解它

  • \[(.*?)
    -这将匹配[]内的任何标记,例如[B],并捕获标记(不包括[])
  • *?
    将所有内容匹配到模式的下一部分
  • \[/\1]
    将匹配相应的[/TAG]

我随意添加了IgnoreCase,这样它将不敏感地匹配大小写。

尝试以下模式:
\[[^\]+\]

解释:它将首先匹配
[
,然后匹配所有非
]
,直到
]


哦,我们同时回答。但你的解释比我的还要好。嗯written@MatějŠtágl谢谢:)谢谢。它正在工作。@Wiktor标记为重复的问题不是重复的。此问题要求删除标记和之间的文本。这些问题只需要去掉标签就行了。谢谢Matěj。谢谢Michał。如果这对你有帮助,你应该接受答案(左边绿色复选标记)。