正则表达式问题

时间:2011-07-05 14:36:03

标签: c# .net regex

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);
}

RegexBuddy screenshot

1 个答案:

答案 0 :(得分:0)

您正在尝试将嵌套结构与正则表达式匹配。看看你的截图:在第一行有三个开口支撑和一个右支撑,在你的第三行你有一个开口和两个关闭括号等。

虽然.NET确实提供了与正则表达式进行嵌套模式匹配的方法,但你的正则表达式并没有使用它们(对我来说,你真正希望实现的是非常神秘的。)

您肯定需要使用不同的方法来解析RTF文件;不幸的是,我不知道.NET库是否提供了RTF解析器。