Match m = Regex.Match(richText, "\\\\par\b", RegexOptions.None);
richText = Regex.Replace(richText, "\\\\par\b", "", RegexOptions.IgnoreCase);
输入:
"{\\rtf1\\ansi\\ansicpg1252\\deff0\\deflang1033{\\fonttbl{\\f0\\fnil Arial;}{\\f1\\fnil\\fcharset0 Microsoft Sans Serif;}}\\viewkind4\\uc1\\pard\\f0\\fs20 CC: not specified\\f1\\fs17\\par}"
我希望它只能找到\\ par,而不是可以在输入中间找到的\\ pard。
答案 0 :(得分:5)
反斜杠是字符串文字和正则表达式中的转义字符,因此当您在字符串文字中使用正则表达式时,您需要将反斜杠加倍或使用@
将字符串文字加前缀。
你不会加倍\b
,所以它是一个退格角色。
答案 1 :(得分:1)
MRAB是正确的:
[TestClass]
public class UnitTest1
{
[TestMethod]
public void TestWithDoubleBackslash()
{
const string regex1 = "\\\\par\\b";
TestRegEx(regex1);
}
[TestMethod]
public void TestWithSingleBackslash()
{
const string regex2 = "\\\\par\b";
TestRegEx(regex2);
}
private static void TestRegEx(string regex)
{
var richText =
"{\\rtf1\\ansi\\ansicpg1252\\deff0\\deflang1033{\\fonttbl{\\f0\\fnil Arial;}{\\f1\\fnil\\fcharset0 Microsoft Sans Serif;}}\\viewkind4\\uc1\\pard\\f0\\fs20 CC: not specified\\f1\\fs17\\par}";
Match m = Regex.Match(richText, regex, RegexOptions.None);
var output = Regex.Replace(richText, regex, "", RegexOptions.IgnoreCase);
Console.WriteLine("BEFORE : [" + richText + "]");
Console.WriteLine("AFTER : [" + output + "]");
Assert.IsTrue(output.Contains("pard"));
Assert.IsFalse(output.Contains("fs17\\par"));
}
}