RegEx匹配一些文字“\ par”NewLine和一个括号

时间:2013-10-29 02:32:29

标签: c# regex string

我在下面有一个rtf格式的文本,其中每个rtf总是包含“\ par newline和a bracket}”

是否有一个RegEx可以在任何“}”之前找到并替换/删除最后一次出现的“\ par”。

输入文字

{\rtf1\fbidis\ansi\ansicpg1252\deff0\nouicompat\deflang1033{\fonttbl{\f0\fnil\fcharset0 Consolas;}{\f1\fnil Segoe UI;}}
{\colortbl ;\red0\green0\blue0;\red255\green255\blue255;\red0\green0\blue255;}
{\*\generator Riched20 6.2.9200}\viewkind4\uc1 
\pard\ltrpar\tx720\cf1\highlight2\f0\fs19 FocusedTextControl.TextElementReadOnly = \cf3 false\cf1 ;FocusedTextControl.TextElementReadOnly = \cf3 false\cf1 ;FocusedTextControl.TextElementReadOnly = \cf3 false\cf1 ;FocusedTextControl.TextElementReadOnly = \cf3 false\cf1 ;FocusedTextControl.TextElementReadOnly = \cf3 false\cf1 ;\highlight0\f1\fs22\par
}

没有\ par

的必需结果
{\rtf1\fbidis\ansi\ansicpg1252\deff0\nouicompat\deflang1033{\fonttbl{\f0\fnil\fcharset0 Consolas;}{\f1\fnil Segoe UI;}}
{\colortbl ;\red0\green0\blue0;\red255\green255\blue255;\red0\green0\blue255;}
{\*\generator Riched20 6.2.9200}\viewkind4\uc1 
\pard\ltrpar\tx720\cf1\highlight2\f0\fs19 FocusedTextControl.TextElementReadOnly = \cf3 false\cf1 ;FocusedTextControl.TextElementReadOnly = \cf3 false\cf1 ;FocusedTextControl.TextElementReadOnly = \cf3 false\cf1 ;FocusedTextControl.TextElementReadOnly = \cf3 false\cf1 ;FocusedTextControl.TextElementReadOnly = \cf3 false\cf1 ;\highlight0\f1\fs22
}

由于我正在使用c#,看起来这也可能会这样做:

        string parR = @"\par";
        var s = content.LastIndexOf(parR, System.StringComparison.Ordinal);
        var n = content.Remove(s, parR.Length);

而不是这样做:

  Regex r = new Regex(@"\\par\r");
  r.Match(content);
  var s =r.Replace(content, string.Empty);

1 个答案:

答案 0 :(得分:0)

这个正则表达式有什么原因不起作用吗?

\\par\}

只需将其替换为\}

即可

(注意反斜杠转义,因为\}都是正则表达式中的特殊字符。)