0

我对正则表达式知之甚少,无法想出一种更聪明的方法将地址列表从块转换为单行。

这是一个例子:

@sdfqsdf
qsdfqdsf
USA

@sdfqsdf
qsdfqdsf
USA
etc.

我目前使用脑死亡的正则表达式:

SEARCH ^@(.+?)\r\n(.+?)\r\n(.+?)\r\n(.+?)\r\n\r\n
REPLACE \1, \2, \3, \4\r\n

这不是很好,因为它假设每个地址有四行,而且它很笨拙。

我想一个更聪明的解决方案是告诉 Perl (Boost) 正则表达式引擎一个块以两个 CRLF 结尾,并且以单个 CRLF 结尾的每一行都应该将其剥离并用逗号替换,但我不知道这个怎么做。

以前有人这样做过并且可以告诉我吗?

谢谢你。

4

1 回答 1

0

遍历所有行并将以空行结尾的每一行替换为逗号和空格。

以下正则表达式应适用于逐行方法(搜索并替换为", "

(?<=.+)\r\n(?!\r\n)

适应\r\n系统的换行符。

如果你想在文本编辑器中进行,VIM 命令是

:%s/.\+\zs\r\n\ze\r\n\@!/, 

记住要适应\r\n,不要忘记后面的空格字符,

于 2013-01-16T14:23:28.550 回答