使用正则表达式转换地址列表的更智能方法

时间:2013-01-16 14:11:24

标签: regex boost-regex

我不太了解正则表达式,想出一种更聪明的方法将地址列表从块转换为单行。

以下是一个例子:

@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

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

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

以前是否有人这样做并且可以告诉我?

谢谢。

1 个答案:

答案 0 :(得分:0)

迭代所有行并用逗号和空格替换空行尾的每一行。

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

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

\r\n改编为系统的换行符。

如果要在文本编辑器中执行此操作,则VIM命令为

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

请记住调整\r\n并且不要忘记,

之后的空格字符