Regex 如何在正则表达式中组合行?

Regex 如何在正则表达式中组合行?,regex,sublimetext,Regex,Sublimetext,因此,我对正则表达式是新手,我只使用一个简单的文本编辑器来学习它们。我有以下文件 84544484N 32343545M 32334546E 34456434M 我试图将每一对行合并成一个制表符分隔的行 结果应该是: 84544484N 32343545M 32334546E 34456434M 我写了以下内容: Search: (.*?)\n(.*?)

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

          84544484N
          32343545M
          32334546E
          34456434M
我试图将每一对行合并成一个制表符分隔的行 结果应该是:

        84544484N  32343545M
        32334546E  34456434M
我写了以下内容:

            Search: (.*?)\n(.*?)
            Replace: \1\t\2
这不起作用,请有人解释为什么,并给我正确的解决办法。谢谢

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

(.+)\r?\n *(.*)
或者-由于SublimateText使用Boost regex-您可以将任何换行符序列与
\R
匹配:

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

正则表达式细分:

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

什么是文本编辑器?Sublime@WiktorStribiżewc请您解释一下什么是\r以及为什么在这里使用它,THANKSS
\r
是回车符,在正则表达式模式中,我对它应用了一个
量词,意思是匹配它的一次或零次出现。使用
\r
更有效-它将匹配所有类型的行休息。工作起来就像一个老板,有精彩的文字3,谢谢@WiktorStribiżew!