Regex 将两行合并为一行-记事本++;

Regex 将两行合并为一行-记事本++;,regex,notepad++,Regex,Notepad++,我有一条这样的线 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 要将应用程序编号06/946825移至下一行,我可以在记事本中找到应用程序编号:,并将其替换为\n应用

我有一条这样的线

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
要将应用程序编号06/946825移至下一行,我可以在记事本中找到应用程序编号:,并将其替换为\n应用程序编号:++

但是,我怎样才能将跨越下一行的字符串带回第一行呢?我的意思是,我应该怎么做才能让富士通有限公司进入以受让人开始的生产线:


有什么指导吗?

我不熟悉记事本++,但逗号后面肯定有“/n”吗?您是否可以删除创建新线段的字符?ie:与您对应用程序所做的操作相反。\u no:

由于Extended是唯一正确处理换行符的模式,但您需要与正则表达式匹配,因此需要分两步执行此操作

首先,使用一个正则表达式find and replace在你想向上移动的每一行的开头添加一些可识别的标记,我使用了“MATCH”,但你肯定可以更改它

然后,切换到Extended以搜索后跟标记的换行符,并将其替换为空字符串以删除换行符和标记


由于Notepad++使用的闪烁引擎中存在缺陷,因此无法使用正则表达式执行此操作。但是,它在“扩展”查找模式下工作,因此请使用该模式。搜索
,\r\n
并替换为


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

我刚刚编写了该宏,并使用了您的示例。 如果您使用的是win7文件,请将此宏添加到shortcuts.xml中。该文件位于C:\Users\{username}\AppData\Roaming\Notepad++

只需打开文本文件,将光标移到第一行,然后运行此宏

<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>

这里是另一个解决方案。一步:

搜索:

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

\1\2\r\n

换行符出现在逗号之后吗?是的。在所有出现的此类图案中,换行符仅出现在逗号之后。新行在所有此类事件中都以空格开头。这只适用于以“Fujitsu Limited”开头的行,但不太通用。OP没有指定任何要执行替换的通用模式。这是我的错。我应该提一下。我给的只是一个例子。事实上,我在一个有超过1000万条记录的文件中有类似的模式。我需要找到所有出现的^[][A-Z](即以空格开头,后跟大写字母的行)并将整行与它前面的行合并。@BhavaniKannan-请参阅我的编辑,它需要两个步骤,但应该可以执行您想要的操作。@F.J-太棒了!简单,但工作像对待!现在,为什么我没有想到呢?我缺乏一些基本常识:-/我确实试过这个。它删除了新行分隔符,但不能帮助我将新行移回(追加)前一行。