RegexBuddy 显示匹配正常,但在 C# 中,当我尝试使用替换时,分号和大括号没有被替换。
我使用的表达式如下:
@"({\\)(.+?)(}+)|(\s?\\)(.+?)(\b)|}$"
并且屏幕截图中包含输入文本 (rtf)。 这是代码:
Regex reg2 = new Regex(@"\\b([\s\S]+?)\\b0");
MatchCollection matches = reg2.Matches(text);
foreach (Match match in matches)
{
string output = reg.Replace(match.Value, "");
MessageBox.Show(output);
}
请您参考如下方法:
您正在尝试将嵌套结构与正则表达式匹配。看看你的截图:在第一行有三个左大括号和一个右大括号,在你的第三行你有一个左大括号和两个右大括号等等。
虽然 .NET 确实提供了使用正则表达式进行嵌套模式匹配的方法,但您的正则表达式并未使用它们(这让我非常困惑您究竟希望实现什么)。
您肯定需要使用不同的方式来解析 RTF 文件;遗憾的是,我不知道 .NET 库是否提供 RTF 解析器。
