【问题标题】:Regex for nth line in a text file文本文件中第 n 行的正则表达式
【发布时间】:2013-11-29 07:22:06
【问题描述】:

我一直在尝试降低这个正则表达式并搜索了很多答案 我需要的是从文本文件中获取第 n 行(在本例中为第 4 行) 我把它记下来了

^(?<=([^\n]*\n){3})[^\n]*\n

但它似乎不起作用(关于需要在后视中固定长度的模式) 有什么办法可以克服这个障碍吗?

如果这个问题需要,任何人都可以提供更正\不同的正则表达式吗?

谢谢

编辑:

我正在 PowerGrep 中尝试这个正则表达式,但它不起作用

附注: 除了正则表达式之外,还有其他方法可以在 powergrep 中获取第 n 行吗?

【问题讨论】:

    标签: regex expression powergrep


    【解决方案1】:

    可能需要使用捕获缓冲区。
    此正则表达式使用 MULTI_LINE 模式。
    捕获缓冲区 1 包含第 4 行

     #  (?:^[^\n]*\n){3}([^\n]*)
    
     (?: ^ [^\n]* \n ){3}
     ( [^\n]* )
    

    编辑:这里没有多行模式也是一样的

     #  ^(?:[^\n]*\n){3}([^\n]*)
    
     ^ 
     (?: [^\n]* \n ){3}
     ( [^\n]* )
    

    【讨论】:

    • 谢谢,您提供的正则表达式在理论上有效,但由于某种原因在 PowerGrep 中无效,我用有关 powergrep 的注释编辑了问题,无论如何感谢您的帮助
    • @user - 我添加了一个非多行等效项,看看是否有效。我必须查找 PowerGrep 才能知道为什么/如果它在那里不起作用。
    • 我试过没有多行的正则表达式它不起作用它一直返回整个 4 行而不是只返回第 4 行
    • @user - 然后就可以了!您只需要获取捕获缓冲区 1。您将获取捕获缓冲区 0(整个匹配项)。是否可以在 PowerGrep 中获取捕获缓冲区?
    • 行动类型怎么样:收集数据,收集\1
    【解决方案2】:

    最好使用 Regex.Split

    Regex.Split(text, "\n", RegexOptions.Multiline)(3)
    

    这将为您提供文本字符串中的第 4 行。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多