【问题标题】:Notepad++ search combination in linesNotepad++ 逐行搜索组合
【发布时间】:2015-11-18 23:56:22
【问题描述】:

我正在寻找包含多行的 txt 文件中的特定组合(记事本 ++)。我要找的一行的结构如下:

xxxxxx  N  N  -1  -1  -1  N (end line)

所以我首先有一个 6 个或更多字符的标识符,后跟 6 个数字 (N),中间用制表符隔开。 N 可以是值 1、0 或 -1。 我正在寻找那些在位置 3、4 和 5 中包含“-1”的行。其他位置可以采用这 3 个值中的任何一个。 我在网上搜索并应用了搜索,例如:

\t-?\t-?\t-1\t-1\t-1\t-?

\t?.\t?.\t-1\t-1\t-1\t?.

t?.\t?.\t-1\t-1\t-1\t?.\n

\t-1\t-1\t-1\t?.\n

然而,该行中的最后一个 N 未被考虑在内,因此如果它的值为 0,例如,该行将不会被选中。

这个搜索的写法是什么?我知道 Notepad ++ 是用 C++ 编写的。

【问题讨论】:

  • 您可以访问 *nix 平台或其工具吗?
  • 我使用记事本++“搜索/查找”。您指的是哪个平台或工具?如果其他工具有助于找到该组合,我想使用它。
  • *nix 指的是 UNIX 或 Linux 平台。

标签: regex search notepad++


【解决方案1】:

你能尝试遵循这个模式吗?:

^([a-zA-Z0-9]{6,})\s*(-1|0|1)\s*(-1|0|1)\s*((-1\s*?){3})\s*(-1|0|1)\s?

https://regex101.com/r/yM5xD3/2


解释:

^:行首。

([a-zA-Z0-9]{6,}): 任意字符六次或更多次。

\s*: space/tab/newLine 零次或多次。

(-1|0|1):其中一个号码。

\s*: ...

(-1|0|1):其中一个号码。

((-1\s*?){3}): -1 一次,后跟空格/tab/newLine 零次或多次。 ('?' 表示正则表达式将尝试获得尽可能少的 \s)

\s*: ..

(-1|0|1): ...

最后一个\s?:查找零或一个空格/制表符/newLineCharacter

【讨论】:

    【解决方案2】:

    你可以试试下面的正则表达式:

    ^[a-zA-Z0-9]+\t(-1|0|1)\t(-1|0|1)\t[\-][1]\t[\-][1]\t[\-][1]\t(-1|0|1)$
    

    我尝试了以下示例,它对我有用。

      xxxxxx    1   1   -1  -1  -1  1
      xxxxxx    0   1   -1  -1  -1  0
      test12    -1  1   -1  1   -1  0
      xxxxxx    1   1   -1  -1  -1  0
      test13    0   1   -1  -1  1   -1
    

    希望对您有所帮助。

    【讨论】:

    • 您的解决方案没有做出任何选择。我相信您将 N 作为字母值而不是 -1、0 或 1。
    • 对不起。我误解了这个问题。我已经更新了正则表达式。它现在应该可以工作了。 (它期望没有尾随空格)
    猜你喜欢
    • 2022-11-05
    • 1970-01-01
    • 2018-02-12
    • 2017-08-05
    • 2013-10-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多