我在下面有一个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);
答案 0 :(得分:0)
这个正则表达式有什么原因不起作用吗?
\\par\}
只需将其替换为\}
(注意反斜杠转义,因为\
和}
都是正则表达式中的特殊字符。)