RegexBuddy显示匹配正常,但在C#中,当我尝试使用replace时,分号和花括号不会被替换。
我正在使用的表达式如下:
@"({\\)(.+?)(}+)|(\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);
}
答案 0 :(得分:0)
您正在尝试将嵌套结构与正则表达式匹配。看看你的截图:在第一行有三个开口支撑和一个右支撑,在你的第三行你有一个开口和两个关闭括号等。
虽然.NET确实提供了与正则表达式进行嵌套模式匹配的方法,但你的正则表达式并没有使用它们(对我来说,你真正希望实现的是非常神秘的。)
您肯定需要使用不同的方法来解析RTF文件;不幸的是,我不知道.NET库是否提供了RTF解析器。