【问题标题】:Regex to find value after nth occurrence of tab正则表达式在第 n 次出现选项卡后查找值
【发布时间】:2017-10-20 11:51:14
【问题描述】:

我在使用 notepad++ 中的正则表达式时遇到问题。我需要在制表符分隔文件中第 n 次出现制表符之后找到值(将是 1 或 0)。选项卡之间的文本可能会有所不同,因此除了选项卡计数之外基本上没有模式。有什么想法吗?

^.*?\t0\t

这行不通,因为可能还有其他地方有 0 在行。

【问题讨论】:

  • 请提供一些示例文本和预期输出。
  • 试一试:^(?:[^\t]+\t){5}([01])\b 将5 更改为您要跳过的号码。
  • @Toto 所说的 :) 仅当允许空字段时,将 + 更改为 *。 IE。 ^(?:[^\t]*\t){5}([01])\b.
  • 托托所说的有道理,而且似乎有效!在试图弄清楚这一点时也想到了这个:^([^\t]*\t){5}0\t([^\t]*\t){17}\r\n
  • @WiktorStribiżew 我只是评论了托托的回答,它解决了 OP 的问题。如果按照我的解释,all 行都有这些值,那么换行符不是问题。如果没有,将[^\t] 更改为[^\t\r\n] 应该可以。将([01])\b 更改为([01])[\t\r\n] 可以解决您的其他问题。

标签: regex notepad++ csv


【解决方案1】:
  • Ctrl+F
  • 查找内容:^(?:[^\t\r\n]+\t){5}([01])(?:\t|$)
  • 检查环绕
  • 检查正则表达式
  • 请勿查看. matches newline
  • 在文档中搜索

说明:

^               : begining of line
  (?:           : start non capture group
    [^\t\r\n]+  : 1 or more character  that is not tab or linebreak
    \t          : a tabulation
  ){5}          : group must appear 5 times (change 5 by any number you want)
  (             : start group 1
    [01]        : 1 digit 0 or 1
  )             : end group 1
  (?:           : non capture group
    \t          : a tabulation
   |            : OR
    $           : end of line
  )             : end group

你想要的数字在#1组中

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-04-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-15
    相关资源
    最近更新 更多