如何使用RegEx在grepWin中搜索文本文件指定行内的特定字符串
grepWin指定行正则搜索方案
前置配置
使用前先完成两个基础设置,保证正则跨行匹配生效:
- 勾选搜索输入框右侧的 Regex 选项,启用正则匹配模式
- 点击下方 Advanced 按钮,在弹出的选项中勾选 Dot matches newline
场景1:单文件匹配指定行的目标字符串
以你给出的示例文件为例,要仅匹配第三行的apple,使用如下正则:
\A(?:[^\n]*\n){2}[^\n]*apple
正则规则说明:
\A匹配文件绝对开头,避免从文件中间位置开始计数行号(?:[^\n]*\n){2}非捕获组,匹配2次完整的行内容+换行符,对应跳过前2行[^\n]*匹配第三行中目标字符串前的所有非换行内容apple为你需要搜索的目标字符串
场景2:多文件检索指定行包含特定内容的文件
要检索所有第4行出现Error Foo的日志文件,使用如下正则:
\A(?:[^\n]*\n){3}[^\n]*Error Foo
操作时在grepWin的「Search in」栏选择要检索的根目录,输入上述正则后点击搜索,结果列表返回的所有文件均符合条件。
通用适配规则
如果需要自定义匹配其他行号、其他目标内容,可直接调整正则的两个参数即可:
- 将
{N}内的数字调整为「目标行号-1」,比如要匹配第10行的内容,就写成{9} - 把正则末尾的目标字符串替换为你要搜索的内容即可
- 如果需要匹配指定行完全等于目标字符串,可将正则修改为
\A(?:[^\n]*\n){N-1}目标字符串$
内容的提问来源于stack exchange,提问作者SteffPoint
相关产品推荐
相关产品推荐

