如何删除 Notepad++ 中第一列之后的所有内容?

Bob*_*b J 42 script notepad++ regex

我试图在 Notepad++ 中的一列之后摆脱所有内容。列模式不是一种选择。是否可以?

我拥有的:

70.97.110.40    159 ms          [n/a]                   21              
70.97.117.177   134 ms          [n/a]                   21              
70.97.120.10    75 ms           [n/a]                   21              
70.97.122.105   87 ms           www.portless.net        21              
70.97.122.106   89 ms           www.popovetsky.org      21              
70.97.122.107   95 ms           www.psmythe.net         21              
70.97.122.104   98 ms           wasabi.prostructure.com 21              
70.97.122.108   89 ms           crm.prostructure.com    21              
70.97.122.109   87 ms           internal.prostructure.com21 
Run Code Online (Sandbox Code Playgroud)

我想要的是:

70.97.110.40
70.97.117.177
70.97.120.10
70.97.122.105
70.97.122.106
70.97.122.107
70.97.122.104
70.97.122.108
70.97.122.109
Run Code Online (Sandbox Code Playgroud)

ash*_*ral 99

这是一个更简单的正则表达式,您可以使用它来实现相同的效果。代替

 .*
Run Code Online (Sandbox Code Playgroud)

(注意前导空格)

一无所有。这将删除第一个空格之后的所有内容,包括第一个空格。只要您的 IP 地址从不以任何空格作为前缀(如您的示例中的情况),这就会起作用。

  • 确保该标志具有 . 匹配换行符已关闭。 (14认同)
  • _Man,_ 正则表达式是纯粹的魔法。我不认为我会理解它:) (8认同)
  • @Cornstalks `\s.*` 更短。甚至可以使用 `\s+.*` 来匹配任意数量的空格,现在我们正在[防御性编码](http://en.wikipedia.org/wiki/Defensive_programming)。 (4认同)
  • 如果它可能是制表符而不是空格,您可以使用 `[ \t].*` (3认同)

Exc*_*lll 62

如果第一列中的数据从不包含空格,您可以使用正则表达式查找和替换来获取所需内容。

在正则表达式模式下,搜索:

^([^ ]*).*
Run Code Online (Sandbox Code Playgroud)

并替换为

\1
Run Code Online (Sandbox Code Playgroud)

这是做什么的:

^表示任何匹配都应从一行的开头开始。
([^ ]*)是任何不包含空格的表达式。匹配是贪婪的,所以这将匹配直到第一个空格(或行尾,以先到者为准)的所有内容。
.*其他一切都行。

\1指括号内的匹配部分。也就是说,整行仅由第一列中的位替换。

  • 这可以更简单地完成:用“”(即没有)替换“.*”(注意前导空格)以删除第一个空格之后并包括第一个空格的所有内容。 (31认同)
  • 很高兴知道 notepad++ 支持搜索替换中的正则表达式! (5认同)
  • @Fraxtil 谢谢。您应该将其发布为答案。你会得到我的赞成票。 (2认同)

小智 39

如果您使用的是 Windows 并且不介意尾随空格(您可以在之后找到/替换它们),请使用块选择功能:

  1. 按住Alt
  2. 使用鼠标,选择要删除的部分(整个文本块)
  3. 松开Alt钥匙
  4. 删除该文本块
  5. 根据需要重复

  • 您可以将其更改为 <kdb>Alt</kbd> 并将其格式化为密钥。 (10认同)

小智 11

一个正则表达式是更快,但你可以做一些与宏真正棘手的事情,如果它是一个更复杂的任务。

你可以录制一个宏:

  1. 光标在第 1 行
  2. 点击开始录制
  3. 主页
  4. 按住CtrlRight arrow(七次)
  5. 按住ShiftEnd
  6. 按键 Delete
  7. 按键 Down arrow
  8. Stop recording

然后回放:

  1. 点击“多次运行宏”
  2. 输入文档的行减 1,因为第一行是完整的。


小智 9

将光标放在 之后70.97.110.40

放置光标

Alt,然后向右和向下拖动光标以选择不需要的部分。

选择

BackspaceDelete

删除


小智 8

以下是给定答案的几种替代方法。

如果您的数据是fixed width,您还可以在搜索中使用以下正则表达式

找什么: ^(.{16}).*$

用。。。来代替: \1

正如有人提到的那样,如果您要保留的数据确实包含空格,那就太好了。此外,对于固定宽度的数据,您可以使用Column Mode Editing. 这是一个简洁的小功能,允许您在同一列位置编辑多行数据。请参阅列模式编辑

它提到了箭头键,但您也可以使用Page Up/Down更快的方法以及EndHome键。鼠标也能用。但是您可以将它用于在某个点之后删除数据的临时方法,特别是如果它只有几行。它也适用于复制数据,但它粘贴的方式有点奇怪,因此您需要先习惯它。