使用负前瞻在两个“CERRADO}”字符串之间查找模式

时间:2017-08-21 21:45:50

标签: regex notepad++ negative-lookahead

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

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模式,这是我到目前为止所拥有的:

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

任何想法都将不胜感激

1 个答案:

答案 0 :(得分:1)

您可以使用

\R(?!CERRADO\})

并替换为空格。

正则表达式匹配:

  • \R - 换行符序列......
  • (?!CERRADO\}) - 未跟CERRADO}

或者,

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

并替换为\1 。这个正则表达式匹配:

  • ^ - 开始行
  • (CERRADO\}.*) - 捕获第1组(稍后从替换模式引用\1反向引用):CERRADO}子字符串,然后是行的其余部分
  • \R - 换行符序列
  • (?!CERRADO\}) - 未跟CERRADO}

要使用此替换进行多次替换,您需要多次点击全部替换

enter image description here