我如何在正则表达式中重叠两行?

时间:2016-06-17 21:11:47

标签: regex notepad++ overlap

我必须行

 o erl pp ng st i g

  v   a  i     r n 

我想要

"重叠字符串"

请帮帮我

我使用notepad ++

2 个答案:

答案 0 :(得分:2)

描述

这并不实用,但这是一个有趣的方法。如果您知道第一个字符串的长度。而且你知道第二个字符串在下一行,你可以简单地找到每个空格并向前看x个字符以找到相关的字符串。在您的示例文本中,您的第一行长度为18个字符,这意味着空格下方的字符距离为18个字符,因此我们只需要查看该字符数即可找到相关字符。

(\S)|\s(?=.{18}(.))

Regular expression visualization

如果您使用$1$2作为替代,那么第一行将包含第一行的非空格或空格正下方的字符。

实施例

现场演示

https://regex101.com/r/oT5lZ1/1

示例文字

o erl pp ng st i g
 v   a  i     r n 

替换后

overlapping string
 v   a  i     r n 

解释

NODE                     EXPLANATION
----------------------------------------------------------------------
  (                        group and capture to \1:
----------------------------------------------------------------------
    \S                       non-whitespace (all but \n, \r, \t, \f,
                             and " ")
----------------------------------------------------------------------
  )                        end of \1
----------------------------------------------------------------------
 |                        OR
----------------------------------------------------------------------
  \s                       whitespace (\n, \r, \t, \f, and " ")
----------------------------------------------------------------------
  (?=                      look ahead to see if there is:
----------------------------------------------------------------------
    .{18}                    any character (18 times)
----------------------------------------------------------------------
    (                        group and capture to \2:
----------------------------------------------------------------------
      .                        any character
----------------------------------------------------------------------
    )                        end of \2
----------------------------------------------------------------------
  )                        end of look-ahead
----------------------------------------------------------------------

答案 1 :(得分:2)

正如其他人所说,正则表达式并不适合这个问题。但也许你可以改用python:

"".join(map(max, zip("o erl pp ng st i g",
                     " v   a  i     r n ")))