我有一个多行文本文件。我将尝试设置一种模式,以在文本的某些行中添加新的回车符。这行是这样的:
lorem ipsum。
多洛尔·阿梅特(Dolor)坐着,热情奉献[FIS] Donec feugiat
好的,模式是一行之后跟另一行,该行也包含一些字符和一个[[]字符。如果'['不存在,则模式失败,并且未添加回车符。
如何使用正则表达式呢?
我也使用C#作为编程语言和正则表达式引擎。
最佳答案
如果要在后面添加换行符。那么您只需将其替换为自身并换行。要确保它是最后一个字符,请先行查找以确保其后跟空格,即(?=\s)
因此,以换行符代替(大多数情况下建议使用):
replace( input , '\.(?=\s)' , '\.\n' )
如果必须使用回车符(即使在Windows上也很少有需要回车符的地方),只需添加一个即可:
replace( input , '\.(?=\s)' , '\.\r\n' )
如果要确保一个。总是跟在两个换行符之间,并且如果已经需要,则不会引起额外的换行符,这会变得稍微复杂一点,并且需要负前瞻,但是看起来像这样:
replace( input , '\.(?!\S)(?:\r?\n){0,2}' , '\.\r\n\r\n' )
因为正则表达式引擎默认为贪婪,所以
{0,2}
会尝试匹配两次,然后匹配一次,然后匹配零次-此时,非空格的否定超前查询将确保它实际上是单词的结尾。(如果您可能有两个以上的换行符,并且希望减少到两个,则可以使用
{0,}
代替,它以*
作为快捷方式。)可能值得指出的是,以上都不消耗任何空格/制表符-如果需要,可以将前行从
(?=\s)
更改为\s+
,您可以用\n[ \t]+
替换\n
>删除所有前导空格/制表符或类似内容,具体取决于您要执行的操作。