C# 如何使用C删除两个括号标记之间的所有内容#
输入:我发现[B]没有一种[B]方法可以这样做 输出结果将是:我找到了一种方法来实现这一点 我的代码: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); 因此,这是一个经过测试的解
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],并捕获标记(不包括[])\[(.*?)
将所有内容匹配到模式的下一部分*?
将匹配相应的[/TAG]\[/\1]
我随意添加了IgnoreCase,这样它将不敏感地匹配大小写。尝试以下模式:
\[[^\]+\]
解释:它将首先匹配[
,然后匹配所有非]
,直到]
哦,我们同时回答。但你的解释比我的还要好。嗯written@MatějŠtágl谢谢:)谢谢。它正在工作。@Wiktor标记为重复的问题不是重复的。此问题要求删除标记和之间的文本。这些问题只需要去掉标签就行了。谢谢Matěj。谢谢Michał。如果这对你有帮助,你应该接受答案(左边绿色复选标记)。