如何在正则表达式中组合线条?

时间:2016-02-22 23:31:54

标签: regex sublimetext

所以我是正则表达式的新手,我只使用简单的文本编辑器学习它们。我有以下文件

          84544484N
          32343545M
          32334546E
          34456434M

我正在尝试将每对线组合成一个制表符分隔线 结果应该是:

        84544484N  32343545M
        32334546E  34456434M

我写了以下内容:

            Search: (.*?)\n(.*?)
            Replace: \1\t\2

这没用,有人可以解释原因并给我正确的解决方案。谢谢!!

1 个答案:

答案 0 :(得分:2)

(.*?)\n(.*?)模式永远不会正常工作,因为模式末尾的(.*?)将始终返回一个空字符串(因为*?是一个惰性匹配量词,如果它可以返回它将使用贪婪匹配并调整模式,如:

(.+)\r?\n *(.*)

或 - 因为SublimeText使用Boost正则表达式 - 您可以将任何换行符序列与\R匹配:

(.+)\R *(.*)

并替换为\1\t\2。注意我在第一个捕获组中将*?替换为+,因为您需要匹配非空行。

正则表达式细分:

  • (.+) - 除换行符之外的一个或多个字符(尽可能多)
  • \R - 换行符序列\r\n\r\n}
  • * - 文字空间,零次或多次出现
  • (.*) - 第2组:除换行符之外的零个或多个字符(尽可能多)

enter image description here / enter image description here