0

我需要从一个主题中删除领先的RE:,这绝对不是我今天的日子,因为我没有得到匹配,而且显然缺少一些简单的东西。我的前任非常清楚Substring方法有效,但我无法忍受糟糕的技术。:)

//emailSubject = emailSubject.Substring(4);
emailSubject = Regex.Replace(emailSubject, @"^.{0, 3}:\s", "");

在我看来,我们应该找到字符串的开头并在零到三个字符之间加上一个冒号和一个空格。然后,应该删除此垃圾。

但是,计算机不同意,我没有想法。我在这里想念什么简单的事情?!

4

3 回答 3

6

去掉逗号后面的空格:

@"^.{0,3}:\s"
于 2013-05-06T09:35:15.667 回答
2

如果您担心多个 FWD 链(和类似链)和多种客户端语言:

    public static string ClearSubject(string originalSubject)
    {
        Regex regex = new Regex(@"^([\[\(] *)?(RE?S?|FYI|RIF|I|FS|VB|RV|ENC|ODP|PD|YNT|ILT|SV|VS|VL|AW|WG|ΑΠ|ΣΧΕΤ|ΠΡΘ|תגובה|הועבר|主题|转发|FWD?) *([-:;)\]][ :;\])-]*|$)|\]+ *$", RegexOptions.IgnoreCase);
        originalSubject = regex.Replace(originalSubject, string.Empty);

        if (regex.IsMatch(originalSubject))
        {
            return ClearSubject(originalSubject);
        }

        return originalSubject;
    }
于 2019-01-23T08:18:47.960 回答
0

您可以使用以下正则表达式re删除所有类型的内容:fwd

^(?>(?:re|fwd) *: *)*

上面的正则表达式将与RegexOptions.IgnoreCase.

它甚至可以处理多个回复和转发,例如:

re: re : RE: fwd : re: fwd: 关于明天的会议
于 2013-05-06T09:40:51.137 回答