在正则表达式中匹配行号和字符的最简单方法是什么?

时间:2019-05-06 11:19:31

标签: c#

当我有一个使用Regex类获得的匹配项时,如何像Notepad ++一样找到匹配项的匹配行号和在该行中的位置?

示例:

void Main()
{
    string _strText = @"Line 1
Line 2
Line 3";
    var re = new Regex("2");
    var m = re.Match(_strText);
    if (m.Success)
    {
        Console.WriteLine(m.Index); // outputs 13
                                    // 13 -> line 2, position 6?
    }
}

1 个答案:

答案 0 :(得分:2)

获取匹配行号:

 long lineNumber = _strText.Substring(0, m.Index).LongCount(chr => chr == '\n') + 1;

并在此行中获得特定的字符位置:

int fis = _strText.LastIndexOf("\n", m.Index);
                    int posi = m.Index - fis;

此处posi是col位置 该代码对于获得匹配的字符行no非常有用,而在此行col则不像Visual Studio编辑器