Notepad++ 删除字符串后的文本

Notepad++ 删除字符串后的文本

我从 IEEE 获得的文本如下:

Spinellis, Diomidis, "The Strategic Importance of Release Engineering," Software, IEEE , vol.32, no.2, pp.3,5, Mar.-Apr. 2015
URL: http://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=7057563&isnumber=7057030

Pautasso, Cesare; Zimmermann, Olaf, "Seeking Your Insights," Software, IEEE , vol.32, no.2, pp.7,9, Mar.-Apr. 2015
URL: http://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=7057623&isnumber=7057030

Holzmann, G.J., "Code Inflation," Software, IEEE , vol.32, no.2, pp.10,13, Mar.-Apr. 2015
URL: http://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=7057573&isnumber=7057030

Cleland-Huang, J., "Injecting Value-Thinking into Prioritization Decisions," Software, IEEE , vol.32, no.2, pp.14,18, Mar.-Apr. 2015
URL: http://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=7057568&isnumber=7057030

我想删除第二个“,”之后的所有内容,并将第一个“,”替换为-,以便它看起来应该如下所示:

Spinellis, Diomidis - The Strategic Importance of Release Engineering
URL: http://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=7057563&isnumber=7057030

Pautasso, Cesare; Zimmermann, Olaf - Seeking Your Insights
URL: http://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=7057623&isnumber=7057030

Holzmann, G.J. - Code Inflation
URL: http://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=7057573&isnumber=7057030

Cleland-Huang, J. - Injecting Value-Thinking into Prioritization Decisions
URL: http://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=7057568&isnumber=7057030

有可能实现这个吗?

谢谢。

答案1

请注意,如果每一行都有引号,那么引号就会在一行上,因此在匹配是否应该匹配新行方面不会出现太大错误。

这样做

每行匹配“.....” (含)。捕获 (...)

为了匹配包括引号在内的引号,

寻找"([^"]*)"

用。。。来代替-\1"

注意对话框中“正则表达式”是被勾选的。

查找部分,圆括号捕获。(您可以说圆括号 -http://en.wikipedia.org/wiki/Bracket 虽然在美国他们不这么称呼,但意思很清楚)

"[^"]*"<-- 匹配所有内容"...",包括引号。但您只想保留/捕获其中的一部分,因为您不想保留开头的引号。因此,查找部分可以包含"([^"]*")或仅包含引号内的部分,因此"([^"]*)" 在替换部分中,圆括号内的部分可以称为 \1 并且您想要-\1"

这是之后的屏幕截图(单击“全部替换”后)。首先输入“查找”部分,如果需要,您也可以输入替换部分。继续单击“查找下一个”查看它循环。然后您就知道查找部分没问题,确保替换部分已按您的需要填写,然后单击“全部替换”。

在此处输入图片描述

编辑

我刚注意到你想在结束后删除所有内容。

你可以用两个正则表达式来完成。但是如果要用一个正则表达式来完成,你可以匹配所有项(包括要删除的内容),然后只捕获你想要的内容

如果您发现与[^"]新行匹配,则可以将其调整为 [^"\r\n]

这个例子可能不是最好的方法,但它有效

查找:([^"\r\n]*)"([^"\r\n]*),".*\r\n
替换:\1-\2\r\n

因此,您可以在图片中看到它应用于第一个,您可以单击“全部替换”并将其应用于所有。

您可以随时撤消并进行实验,例如应用于一行,撤消,看看它是您想要的,然后“全部替换”

您可以轻松地在替换部分中的 hiphen/dash 周围添加任何空格

在此处输入图片描述

答案2

手动解决方法如下:

查找 {,"}; shift+ end;del对于每一行
然后查找 {, "}; 全部替换为 { - }

或者反过来,无论你喜欢哪种顺序。

相关内容