首页 > 解决方案 > .NET 正则表达式前瞻自定义行延续

问题描述

我正在尝试在 powershell 中逐行解析文件,然后根据该行的文本按字母顺序对其进行排序。唯一需要注意的是,以“...”开头的行应被视为前一行的延续。

示例输入:

Lorem ipsum dolor. sit amet
ne his posse convenire corrumpit
meliore suavitate ex mel
...Affert quidam docendi vix ex
...in adhuc dolore his
Fabulas scriptorem ex ius
...Nam ad vero ferri placerat
Lorem homero aperiam qui ne
...Qui esse altera 
...recusabo no
..eu eros mediocrem
mediocritatem mel. Novum fabulas ei sed. 

预期输出:

Fabulas scriptorem ex ius
...Nam ad vero ferri placerat
Lorem homero aperiam qui ne
...Qui esse altera 
...recusabo no
...eu eros mediocrem
Lorem ipsum dolor. sit amet
mediocritatem mel. Novum fabulas ei sed. 
meliore suavitate ex mel
...Affert quidam docendi vix ex
...in adhuc dolore his
ne his posse convenire corrumpit

我可以使用此正则表达式获得第一行继续,但无法识别第二、第三、...第 n 行继续... .*(\r\n\.\.\.)?.*\r\n 在此处输入图像描述

任何人都可以帮助我适应正则表达式来解决这个问题?

标签: .netregexpowershell

解决方案


而不是使\r\n\.\.\.可选,您需要使整个延续(即可\r\n\.\.\..*选(但可能不止一次出现)。您可以通过修改正则表达式来做到这一点:

.*(?:[\r\n]+\.\.\..*)*[\r\n]+

正则表达式 101 上的演示

请注意,由于 regex101 在行尾看不到\r字符,因此我必须替换\r\n[\r\n]+以使其在那里工作。两者都应该在您的环境中工作。


推荐阅读