0

我的数据如下所示:

7DigitNumbers (tabspace) IRRELEVANTSTUFF123 (tabspace) 30

例子:

2712061    really irrelevant words and numbers     30

我想要得到的是:

7DigitNumbers (tabspace) 30

在同一个例子中:

2712061     30 

我已经通过 find&replace 功能在 notepad++ 上尝试了几种组合,但无法弄清楚。你可以帮帮我吗?

在此先感谢,麻省理工学院

4

3 回答 3

1

看起来 Don Ho 在 Notepad++ 原生替换中添加了 RegEx 回溯。从此处
下载记事本 6.1.1 安装记事本 6.1.1,然后转到搜索->替换

Find what:    ^([0-9]{7})(\t).*([0-9]{2})$  
Replace with: \1\2\3

单击全部替换按钮

于 2012-04-20T21:50:07.860 回答
1

获取 Windows 的 awk 副本,例如:gawk并使用以下命令:awk "{print $1,$NF}". 这将打印第一列和最后一列(NF 是字段数)。

将数据复制到文件中并在某些单词之间添加一些选项卡的快速测试会产生:

C:\temp>awk "{print $1 \"\t\" $NF}" z.dat
2712061 32
2712062 31
2712063 30

awk print 语句连接它的所有参数 - 因此这将使用单个制表符分隔第一列和最后一列的值。

于 2012-04-20T14:59:07.087 回答
0

使用PythonScript Notepad++ 插件进行 Python 正则表达式搜索和替换。功能
这里

Editor.pyreplace(search, replace[, count[, flags[, startLine[, endLine]]]])  

Editor.pymlreplace(search, replace[, count[, flags[, startPosition[, endPosition]]]])  

这是一个使用 python 正则表达式搜索和替换函数 editor.pyreplace() 的简单程序,
我在其中留下了很多调试代码,因此您可以查看函数运行过程中发生的情况。

# $Revision: 1.3 $
# $Author: dot $
# $Date: 2012/04/19 00:03:26 $

from Npp import *
import re, string

expression = notepad.prompt(
                 "Enter the search string on the first line, followed by Ctrl+Enter, \n" +
                 "followed by the replace string on second line",
                 "RegEx and Search/Replace" ,
                 "")

debug = True
#debug = False

if debug:
    bufferID = notepad.getCurrentBufferID()

if debug:
    # Show console for debugging
    console.clear()
    console.show()

if expression != None:
    expressionList = re.split(r"[\n\r]+", expression)

    if debug:
        console.write( expression + "\n" )

    if len(expressionList) == 2:
        if debug:
            console.write( "'" + expressionList[0] + "', '" + expressionList[1] + "'\n" )

        # First we'll start an undo action, then Ctrl-Z will undo the actions of the whole script
        editor.beginUndoAction()

        if debug:
            console.write( 'editor.pyreplace( r"%s" % expressionList[0], r"%s" % expressionList[1], 0, re.IGNORECASE)\n' )

        editor.pyreplace( r"%s" % expressionList[0], r"%s" % expressionList[1], 0, re.IGNORECASE)

        # End the undo action, so Ctrl-Z will undo the above two actions
        editor.endUndoAction()

# Debug
if debug:
    notepad.activateBufferID(bufferID)

将此脚本链接到 Notepad++ 快捷方式(即 Ctrl+r)后,搜索

^([0-9]{7})(\t).*([0-9]{2})$  

并替换为

\1\2\3

将此脚本映射到 Notepad++ 快捷方式Ctrl+<ChooseALetter>并运行它。
我已经测试了这个脚本,效果很好!

于 2012-04-20T17:16:18.263 回答