REGEX:意思是什么。然后+?

时间:2014-07-02 20:17:17

标签: c# regex

很抱歉提出这个问题,但我真的卡住了。此代码属于已离开公司的人。它引起了问题。

protected override string CleanDataLine(string line)
    {
        //the regular expression for GlobalSight log
        Regex regex = new Regex("\".+\"");
        Match match = regex.Match(line);
        if (match.Success)
        {
            string matchPart = match.Value;
            matchPart = 
                  matchPart.Replace(string.Format("\"{0}\"", 
                  Delimiter), string.Format("\"{0}\"", "*+*+"));
            matchPart = matchPart.Replace(Delimiter, '_');
            matchPart = 
                  matchPart.Replace(string.Format("\"{0}\"", "*+*+"), 
                  string.Format("\"{0}\"", Delimiter));
            line = line.Replace(match.Value, matchPart);
        }
        return line;
    }

我花了很多时间研究。他想要完成什么?

感谢您的帮助。

4 个答案:

答案 0 :(得分:2)

正则表达式匹配

  • 引用("),
  • 后跟一个或多个(+)个字符(除换行符之外的任何字符(.),尽可能多),
  • 后跟引用"

这不是一个非常好的正则表达式。例如,在字符串foo "bar" baz "bam" boom中,它将匹配"bar" baz "bam"

如果打算匹配带引号的字符串,则更合适的正则表达式为"[^"]*"

答案 1 :(得分:2)

。是除\ n之外的任何字符,+表示1或更多。

所以:。+是" 1个或多个字符"

答案 2 :(得分:1)

该点匹配除换行符之外的任何字符。 + 是“一个或多个”(等于 {1,}

答案 3 :(得分:1)

protected override string CleanDataLine(string line)
{
    //the regular expression for GlobalSight log
    Regex regex = new Regex("\".+\"");
    Match match = regex.Match(line);
    if (match.Success)
    {
        string matchPart = match.Value;
        matchPart = 
              matchPart.Replace(string.Format("\"{0}\"", 
              Delimiter), string.Format("\"{0}\"", "*+*+"));
        matchPart = matchPart.Replace(Delimiter, '_');
        matchPart = 
              matchPart.Replace(string.Format("\"{0}\"", "*+*+"), 
              string.Format("\"{0}\"", Delimiter));
        line = line.Replace(match.Value, matchPart);
    }
    return line;
}

line只是一些文字,可能是Hello World,或者其他任何内容。

new Regex("\".+\"") \"是一个转义引号,这意味着它实际上是在寻找以双引号开头的字符串。 .+表示一次或多次查找不包括换行符的任何字符。

如果它匹配,那么他试图通过抓取值来找出匹配的部分。

然后它变成普通搜索并替换匹配的任何字符串。