所以我是正则表达式的新手,我只使用一个简单的文本编辑器来学习它们。我有以下文件
84544484N
32343545M
32334546E
34456434M
我试图将每一对线组合成一个制表符分隔的线
结果应该是:
84544484N 32343545M
32334546E 34456434M
我写了以下内容:
Search: (.*?)\n(.*?)
Replace: \1\t\2
这不起作用有人可以解释原因并给我正确的解决方案。谢谢!!
最佳答案
(.*?)\n(.*?)
模式永远不会很好用,因为 (.*?)
在模式的末尾将始终返回一个空字符串(因为 *?
是一个惰性匹配量词,如果它可以返回零个字符(它可以)它会。使用贪婪匹配并调整模式,如:
(.+)\r?\n *(.*)
或者 - 因为 SublimeText 使用 Boost regex - 你可以用
\R
匹配任何换行序列:(.+)\R *(.*)
并替换为
\1\t\2
.注意我替换了 *?
与 +
在第一个捕获组中,因为您需要匹配非空行。正则表达式分割:
(.+)
- 除换行符外的一个或多个字符(尽可能多),最多为 \R
- 换行序列( \r\n
, \r
或只是 \n
) *
- 文字空间,零次或多次出现 (.*)
- 第 2 组:除换行符以外的零个或多个字符(尽可能多)/
关于regex - 如何组合正则表达式中的行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35565990/