使用否定前瞻查找两个 "CERRADO}" 字符串之间的模式

finding pattern between two "CERRADO}" strings using negative look-ahead

我有一个包含如下行的文本文件:

CERRADO}165856}TICKET}DESCRIPTION}some random text here\r\n
other random text here}158277747\r\n
CERRADO}165856}TICKET}FR2CODE}more random text also here}1587269339\r\n

我的最终目标是将那些不以 "CERRADO}" 字符串开头的行与其前一行连接起来。文件中可能有任意数量的行不以该字符串开头。这是最终结果:

CERRADO}165856}TICKET}DESCRIPTION}some random text here other random text here}158277747\r\n
CERRADO}165856}TICKET}FR2CODE}more random text also here}1587269339\r\n

我的第一次尝试是创建一个简单的正则表达式来匹配这些行。

CERRADO\}.+\r\n(?!CERRADO\})(.+\r\n)+

在正确设置正则表达式后,创建一个匹配组并替换它以摆脱 \r\n 模式,这是我目前所拥有的:

建议的正则表达式匹配文件中的所有行,而不仅仅是需要的行。

如有任何想法,我们将不胜感激

您可以使用

\R(?!CERRADO\})

并替换为 space.

正则表达式匹配:

  • \R - 换行序列是...
  • (?!CERRADO\}) - 后面没有 CERRADO}

或者,

^(CERRADO\}.*)\R(?!CERRADO\})

并替换为 。此正则表达式匹配:

  • ^ - 行首
  • (CERRADO\}.*) - 捕获第 1 组(稍后用替换模式中的 </code> 反向引用引用):<code>CERRADO} 子字符串,然后是行的其余部分
  • \R - 换行序列
  • (?!CERRADO\}) - 后面没有 CERRADO}

要用这个进行多次替换,您需要多次点击全部替换