删除"[]"所有这些都出现在字符串中

本文关键字:quot 字符串 所有这些 删除 | 更新日期: 2023-09-27 18:19:02

我正在构建一个小的文本清理程序,我目前正在维基文章上测试它,我试图有效地删除"[2]","[14]","[nb 6]"等。

我有这段代码,它几乎完成了这项工作,但它看起来非常长,我觉得必须有一种方法在一行中完成它,但我是Regex的新手,无法弄清楚。我也读过关于Regex的各种各样的意见,所以如果有另一种方法,那就太好了。

无论如何,这是我当前的代码:

string  refinedText = Regex.Replace(sourceText, @"'[[0-9]']", "");
        refinedText = Regex.Replace(refinedText, @"'[[0-9]", "");
        refinedText = Regex.Replace(refinedText, @"'[[a-z]", "");
        refinedText = Regex.Replace(refinedText, @"[0-9]']", "");

问题是"[]"内有2个数字,我不知道如何告诉它删除两者,因为做"0-9"只是删除第一个数字,我可以为他们做2部分的替换;但对于"[nb 3]"的实例,b总是保持不变,因为我无法在"[]"消失后指定单独的"b"作为引用。还有"[nb 14]"同样的问题,如果有两位数后的"nb"。

我确信这只是在1行中完成,但我找不到任何地方解释regex到这种程度。

-谢谢。

删除"[]"所有这些都出现在字符串中

如果您想删除方括号及其内容,无论内容是什么,表达式看起来像这样:

@"'[[^']]*']"

这意味着"匹配所有内容,直到结束括号"。这比带有不情愿限定符.*?的点更有效,因为它避免了所谓的灾难性回溯

使用+修饰符:

string refinedText = Regex.Replace(sourceText, @"'[[0-9]+']", "");

作为正则表达式语言-快速参考解释:

匹配前一个元素一次或多次。

删除括号之间的任何字符:

string refinedText = Regex.Replace("[0as9]", @"'[.+']", "");

或者如果您还想处理"[]"的情况,那么将+更改为*:

匹配前一个元素0次或多次。

string refinedText = Regex.Replace("[0as9]", @"'[.*']", "");

试试:

string  refinedText = Regex.Replace(sourceText, @"'[[0-9]+']", "");

你也可以这样做:

var refinedText = Regex.Replace(sourceText, @" ?'[.*?']", string.Empty);
<<p> REGEX演示/strong>

这将删除文本框内的所有内容,包括字符和数字