首页 > 解决方案 > 正则表达式:在(文本)文件的某一行搜索字符串

问题描述

是否有正则表达式方法仅在特定行搜索给定(文本)文件?我正在使用工具“grepWin”。

例如,如果我的文本文件是:

This is the first line 
This is the second line 
This is the third line
This is the fourth line

如何在第三行中仅搜索并找到字符串“line”?

标签: regex

解决方案


有一种正则表达式方法,但您可能希望将文本拆分为split('\n')(或类似的,具体取决于语言)。
无论如何,您将拥有您正在寻找的东西:

^(?<!\n)(?:.*?\n){2}[^\n]*?(line)
  • ^确保我们从一行的开头开始
  • (?<!\n)是一个消极的向后看,以确保当前行之前没有另一行(即我们从第一行开始计数)
  • (?:...)划定一个非捕获组。这不是比赛的相关部分
  • .*?\n匹配任何字符,直到遇到换行符(?使表达式变得懒惰而不是贪婪)
  • {2}是您要计算的换行数(基本上是您的行号减 1)
  • .*?(line)匹配任何字符,直到下一次出现“line”

见这里:https ://regex101.com/r/JIRkpN/1


推荐阅读