正则表达式发现模式留下旧值

时间:2018-04-02 16:53:25

标签: c# regex

对于这个问题,应该如何替换正则表达式:

输入:2011,01,10 a,john.doe@gimail.com

我希望:2011,01,10 a.john.doe@gmail.com

我写这样的方法:

public static string CorrectSmallMistakes(string email)
{
    string result;
    string pattern = "gimail\\.";
    string replacment = "gmail.";

    Regex rgx = new Regex(pattern);

    email= rgx.Replace(email, replacment);

    pattern = @"(\w,)";
    replacment = "\\w\\.";

    rgx = new Regex(pattern);
    result = rgx.Replace(email, replacment);

    return result;
}

将gimail替换为gmail是好的,但对于a,对于a。不管用。我得到了

201\w\.0\w\.10   \w\.emil.rutkowski1986@gmail.com

我如何编写替换以留下旧值?

1 个答案:

答案 0 :(得分:1)

使用"."仅匹配字母。使用零长度lookbehindpattern = @"(?<=\p{L}),"; replacment = "."; rgx = new Regex(pattern); result = rgx.Replace(email, replacment); 的文字替换:

\w

这样会检查pandas: 0.22.0-py36h6538335_0 --> 0.22.0-py35_0 conda-forge 部分,但不会成为匹配的一部分。

Demo.