我有一個多行文本文件。我將嘗試設置一種模式,以便在文本的某些行中添加新的回車符。這條線是這樣的:如何使用正則表達式在文本中添加回車符?
lorem ipsum。
悲坐阿梅特,consectetur adipiscing ELIT [FIS] Donec feugiat
好,圖案爲線,接着其他具有一些字符和一個「[」字符太。如果'['不存在,則該模式失敗並且未添加回車符。
我該如何使用正則表達式?
我使用C#作爲編程語言和正則表達式引擎。
我有一個多行文本文件。我將嘗試設置一種模式,以便在文本的某些行中添加新的回車符。這條線是這樣的:如何使用正則表達式在文本中添加回車符?
lorem ipsum。
悲坐阿梅特,consectetur adipiscing ELIT [FIS] Donec feugiat
好,圖案爲線,接着其他具有一些字符和一個「[」字符太。如果'['不存在,則該模式失敗並且未添加回車符。
我該如何使用正則表達式?
我使用C#作爲編程語言和正則表達式引擎。
我相信你可以用\ 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");
如果您想要在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+
,你可能可以做一個與\n
秒取代\n[ \t]+
刪除任何前導空格/標籤或類似內容,具體取決於您要做的事情。
對我的問題的迴應是在這裏:http://stackoverflow.com/questions/767869/how-to-regex-replace-match-group-item-with-method-result – jaloplo 2009-11-12 17:09:09