如何使用正则表达式在文本中添加回车符?

时间:2009-11-02 15:27:48

标签: c# .net regex

我有一个包含多行的文本文件。我将尝试设置一个模式,在文本的某些行中添加一个新的回车符。这条线是这样的:

lorem ipsum。
dolor sit amet,consectetur adipiscing elit [FIS] Donec feugiat

嗯,这个模式是一行,后面是一行,有一些字符和一个'['字符。如果'['不存在,则模式失败并且未添加回车。

如何使用正则表达式?

我也使用C#作为编程语言和regex引擎。

3 个答案:

答案 0 :(得分:3)

如果你想在a之后添加换行符。然后你只需用自己和换行符替换它。要确保它是最后一个字符,请使用前瞻检查后面跟空格,即(?=\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+,您可以再次替换{{ 1}} \n[ \t]+删除任何前导空格/标签或类似内容,具体取决于您要执行的操作。

答案 1 :(得分:2)

我相信您可以使用\ r进行回车,使用\ n进行换行

答案 2 :(得分:1)

什么味道?这是为C#做的:

string yourString = @"el tiempo.
campo vectorial vector field. [FIS] Campo ";
string newString = Regex.Replace(yourString, "el tiempo.", "$0\r\n");  // just \n may be sufficient though

编辑:以上是对原始问题的回答。在Peter Boughton的出色答案之后,我不需要添加太多东西。好吧,也许这个,一个没有外观断言的小正则表达式,只需用两个换行符替换所有点后跟一个或多个换行符。

string newString = Regex.Replace(yourString, @"\.(\r|\n)+", ".\r\n\r\n");