2009-07-28 48 views
0

我根本沒有聲稱是RegEx專家,我對這個陳述的內容有點困惑。我正在嘗試重構,並且正在按鍵按下並吃掉大量的CPU。RegEx語句在做什麼?

Regex.Replace(_textBox.Text, "(?<!\r)\n", Environment.NewLine); 

謝謝。

+1

你是說你每次按下某個鍵時都試圖替換文檔中的所有換行符?如果是這樣,那麼這就是性能問題的根源。無論如何,你爲什麼這樣做? – 2009-07-28 16:04:44

+0

如果你真的想經常使用正則表達式,請編譯它__。 – Cheeso 2009-07-28 16:08:46

回答

8

正則表達式(?<!\r)\n將匹配之前沒有\r字符的任何\n字符。語法(?<!expr)negative look-behind assertion,意思是expr必須當前位置之前的部分相匹配。

1

它將用\ Environment.NewLine字符串替換\ n之前沒有\ r的所有實例。此字符串是特定於平臺的換行符(在Windows這將是字符串「\ r \ n」)

0

正則表達式將匹配任何換行符\n不是由一個回車符\r特定平臺之前NewLine人物。

NewLine特點是:

  • \r\n對非Unix平臺
  • \n對於UNIX平臺
1

除了答案解釋什麼是正則表達式不(符合所有人\ n的不一個\ r在它之前),我只想指出,這種使用Replace()很可能從來沒有必要,除非你有用戶打字\ n的某種方式hellbent。即使這樣,當使用文本作爲整體時(即,在以某種方式提交數據之後),您可能不需要按下按鍵。

如果這是爲了清理複製粘貼的文本,那麼你可以重構它,只有當大量的文本已被改變時才運行。