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()。