【问题标题】:Notepad++ regex - search only in certain column all numbers between two numbers?Notepad ++正则表达式 - 仅在某些列中搜索两个数字之间的所有数字?
【发布时间】:2026-01-15 10:25:01
【问题描述】:

我现在有 2.5 亿行来自数据库的文本。

我只想突出显示仅在第三列中的某些值。 我使用这个\b1011(3[1-9]\d[1-9]|[4]\d\d\d|5[0-8][0-3][0-6])\b 突出显示 10113101 到 10115836 之间的所有值。 可以排除第 4 列中的数字吗?

编辑:一列对我来说意味着空格之间的文本

1           2        3      4     5  ..... columns
307607 1317011864 10113101 -25 13135611 2700 0 0 0 12 0 0 0 walk029h.rwx
2264 910115836 10114632 -15 20111192 900 0 0 0 11 0 0 0 walk029.rwx
326169 1010523891 10115836 -1 20911192 0 0 0 0 11 0 0 0 walk12h.rwx
38718 826265392 10113628 0 10114603 2700 0 0 0 11 0 0 0 street2.rwx
241512 1317011864 636346 0 10113987 900 0 0 0 12 0 0 0 walk029h.rwx
38718 826266129 10113448 0 10114310 900 0 0 0 10 0 0 0 tree5m.rwx
38718 826266243 10113898 0 10114810 900 0 0 0 10 0 0 0 tree9m.rwx

【问题讨论】:

  • 给定输入的预期输出是什么?是 690、995、6325 等(第 3 列?)。你是什​​么意思排除第4列中的数字?就像由于 345 在第 4 列中一样,如果它显示在第 3 列中,则不匹配它?
  • 如果我使用正则表达式进行搜索,那么 10113101 到 10115836 之间的数字也会在第 4 列中突出显示,但我只想在第 3 列中突出显示数字。

标签: regex search notepad++


【解决方案1】:

This pattern 将仅在第三列中捕获您想要的数字。有关它们的值,请参阅捕获组 1。

^(?:\S+\s){2}\b(1011(?:3[1-9]\d{2}|4\d{3}|5[0-8][0-3][0-6]))\b.*

我所做的只是修改你的添加前缀并删除一些冗余。

【讨论】:

  • 我已经测试过了,但是10113500被忽略了,比如红框里link
  • 因为您的原始模式不允许将其作为有效选项。我已更新我的答案以允许该号码。
  • hmm 第 3 列被正确突出显示,但在一行中,第 4 列被包括在内,这是不想要的。我的>picture< 上的绿色框中的示例。但我很高兴我离我的结果更近了谢谢你:)
  • 您应该能够通过将^ 放在模式的开头来解决这个问题。我会再次更新。
最近更新 更多