REGEX:什么意思?后面跟着+

本文关键字:什么 意思 REGEX | 更新日期: 2023-09-27 18:11:08

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

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;
    }

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

谢谢你的帮助。

REGEX:什么意思?后面跟着+

这个正则表达式匹配

  • a quote ("),
  • 后面跟着一个或多个(+)字符(除换行符(.)外的任何字符,尽可能多),
  • 后接引号"

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

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

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

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

点匹配除换行符以外的任何字符。 + 是"一个或多个"(= {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("'".+'"") '"是一个转义引号,这意味着它实际上是在寻找一个以双引号开头的字符串。.+表示查找一次或多次不包括换行字符的任何字符。

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

然后它就变成了一个正常的搜索并替换匹配的字符串