2011-10-18 62 views
3

我有这样合并两行成一个 - 记事本++

assignee: Akebono Brake Industry Co. Ltd. , 
Fujitsu Limited application_no: 06/946,825 

我想要一条线输出为

assignee: Akebono Brake Industry Co. Ltd. , Fujitsu Limited 
application_no: 06/946,825 

为了使application_no:06/946825到下一行,我可以找到application_no:并用\ napplication_no:代替我的NOTEPAD ++

但是,如何将跨越下一行的字符串带回第一行?我的意思是我应该怎么办得到富士通有限公司到开头的行受让人:

任何指导意见吗?

+0

是否断线发生逗号后? –

+0

是的。在这种模式的所有事件中,换行符都只在逗号后出现。新行开头的空间在所有这些事件。 –

回答

8

由于Extended是正确处理换行符的唯一模式,但需要与正则表达式匹配,所以需要分两步进行。

首先,使用正则表达式查找和替换来添加一些可识别的标记到你想要向上移动的每一行的开始处,我使用了'MATCH',但你可以肯定地改变它。

Step 1: Add a token to beginning of matching lines

然后切换到扩展到搜索新行后跟令牌,并用一个空字符串替换它同时删除换行符和令牌。

Step 2: Use the token to remove the line break

+0

只适用于以'富士通有限公司'开头并非如此通用的行。 –

+0

OP没有指定他想要执行替换的任何通用模式。 –

+0

这是我的错。我应该提到。我给的只是一个例子。实际上,我在一个文件中拥有超过1000万条记录的类似模式。我需要查找所有出现的**^[] [A-Z] **(即以空格开头并以大写字母开头的行),并将整行与其之前的行合并。 –

1

我不熟悉记事本++,但肯定在逗号后面有一个“/ n”?你不能只是删除创建新的线段的字符?即:与你正在对application_no做的相反:

+0

我确实尝试过。它删除新的换行符,但不帮助我将(追加)这一新行返回到上一行。 –

1

你不能做到这一点与正则表达式由于在记事本++使用Scintilla的机的缺陷。然而,它在“扩展”找到模式,所以使用。搜索,\r\n并替换为,

在Linux上将\r\n更改为仅\n,或者在Mac OS上将\r\n更改为仅限\r

1

我刚刚写了这个宏,并与您的示例一起工作。 将此宏添加到shortcuts.xml中,如果使用win7文件位于C:\ Users \ {username} \ AppData \ Roaming \ Notepad ++

只需打开您的文本文件并将光标放到firts行,然后运行这个宏。

<Macro name="stackoverflow" Ctrl="no" Alt="no" Shift="no" Key="0"> 
    <Action type="3" message="1700" wParam="0" lParam="0" sParam="" /> 
    <Action type="3" message="1601" wParam="0" lParam="0" sParam="application_no" /> 
    <Action type="3" message="1625" wParam="0" lParam="0" sParam="" /> 
    <Action type="3" message="1702" wParam="0" lParam="768" sParam="" /> 
    <Action type="3" message="1701" wParam="0" lParam="1" sParam="" /> 
    <Action type="0" message="2302" wParam="0" lParam="0" sParam="" /> 
    <Action type="0" message="2451" wParam="0" lParam="0" sParam="" /> 
    <Action type="0" message="2306" wParam="0" lParam="0" sParam="" /> 
    <Action type="0" message="2326" wParam="0" lParam="0" sParam="" /> 
    <Action type="3" message="1700" wParam="0" lParam="0" sParam="" /> 
    <Action type="3" message="1601" wParam="0" lParam="0" sParam="application_no" /> 
    <Action type="3" message="1625" wParam="0" lParam="0" sParam="" /> 
    <Action type="3" message="1702" wParam="0" lParam="768" sParam="" /> 
    <Action type="3" message="1701" wParam="0" lParam="1" sParam="" /> 
    <Action type="0" message="2308" wParam="0" lParam="0" sParam="" /> 
    <Action type="1" message="2170" wParam="0" lParam="0" sParam="&#x000D;" /> 
    <Action type="1" message="2170" wParam="0" lParam="0" sParam="&#x000A;" /> 
</Macro> 
2

这是另一种解决方案。一步:

搜索:

(^.*,.*$)\r\n([ A-Z]*[ ]) 

替换:

\1\2\r\n