簡體   English   中英

如何使用正則表達式在文本中添加回車符?

[英]How can I add a carriage return in a text using regex?

我有一個多行文本文件。 我將嘗試設置一種模式,以在文本的某些行中添加新的回車符。 這行是這樣的:

好的,模式是一行之后跟另一行,該行也包含一些字符和一個[[]字符。 如果'['不存在,則模式失敗,並且未添加回車符。

如何使用正則表達式呢?

我也使用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刪除所有前導空格/制表符或類似內容,具體取決於您要執行的操作。

我相信您可以將\\ r用於回車,並將\\ n用於新行

什么口味? 在這里,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");

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM