c# - 获取匹配模式的行号

标签 c# regex

我使用这段代码来检查一个字符串是否存在于我加载到内存中的文本文件中

foreach (Match m in Regex.Matches(haystack, needle))
    richTextBox1.Text += "\nFound @ " + m.Index;

正则表达式返回匹配发生的位置,但我想要 知道行号吗?

最佳答案

最好的解决方案是调用一个仅在匹配发生时才获取行号的方法。 这样,如果检查了多个文件并且带有 \n 的正则表达式将起作用,则性能不会受到太大影响。在 stackoverflow 的某个地方找到了这个方法:

    public int LineFromPos(string input, int indexPosition)
    {
        int lineNumber = 1;
        for (int i = 0; i < indexPosition; i++)
        {
            if (input[i] == '\n') lineNumber++;
        }
        return lineNumber;
    }

关于c# - 获取匹配模式的行号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8468147/

相关文章:

c# - LDAP 到大型机环境

C# 从 Word 文档中检索 FormFields 并插入到文本文件中

c# - 正则表达式匹配 4 组中的 2 组

c++ - 不能同时包含 Eigen 和 boost/regex

c# - 在名为 test113.onmicrosoft.com 的租户中找不到名为 HTTPS ://test113. onmicrosoft.com/FTP 的应用程序

c# - WebClient 下载字符串与 WebBrowser 查看源代码不同

r - 从文本文件中提取模式之间的数据

java - 正则表达式 Java。为什么要使用交集?

c# - 绑定(bind)ContentPresenter的内容

javascript - 为什么我的正则表达式输出中会出现 a/?