C# 正则表达式不';不要在冒号之前替换任何东西
我想去掉电子邮件中主题行的“C# 正则表达式不';不要在冒号之前替换任何东西,c#,regex,C#,Regex,我想去掉电子邮件中主题行的“”re:”: My string helper扩展执行以下操作: return Regex.Replace(value, "([re:][re :])", "",RegexOptions.IgnoreCase); 但是,它似乎在“re:”上匹配,但在“re:”上不匹配。 这有什么原因吗?我该如何着手解决它呢?你的意思可能是: Regex.Replace(value, "re:|re :", "", RegexOptions.IgnoreCase); 也可以写为
”re:”
:
My string helper扩展执行以下操作:
return Regex.Replace(value, "([re:][re :])", "",RegexOptions.IgnoreCase);
但是,它似乎在“re:
”上匹配,但在“re:”上不匹配。
这有什么原因吗?我该如何着手解决它呢?你的意思可能是:
Regex.Replace(value, "re:|re :", "", RegexOptions.IgnoreCase);
也可以写为:
Regex.Replace(value, "re ?:", "", RegexOptions.IgnoreCase);
这里有一个可能更好的表达:
Regex.Replace(value, "^\s*re\s*:\s*", "", RegexOptions.IgnoreCase);
它只匹配字符串的开头(
^
),还删除了以下任何空格(\s*
)。表达式将匹配:r
、e
或:
,后跟r
、e
、空格或:
。我认为您不想在这里使用字符类。它看起来更像是你想要的re:
,但我可能错了……所有的测试似乎都通过了我的单元测试,我喜欢第一个测试,因为它可读性很强,但我需要在生成的字符串上使用Trim()。