2009-07-28 76 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。即使这样,当使用文本作为整体时(即,在以某种方式提交数据之后),您可能不需要按下按键。

如果这是为了清理复制粘贴的文本,那么你可以重构它,只有当大量的文本已被改变时才运行。