我根本没有声称是RegEx专家,我对这个陈述的内容有点困惑。我正在尝试重构,并且正在按键按下并吃掉大量的CPU。RegEx语句在做什么?
Regex.Replace(_textBox.Text, "(?<!\r)\n", Environment.NewLine);
谢谢。
我根本没有声称是RegEx专家,我对这个陈述的内容有点困惑。我正在尝试重构,并且正在按键按下并吃掉大量的CPU。RegEx语句在做什么?
Regex.Replace(_textBox.Text, "(?<!\r)\n", Environment.NewLine);
谢谢。
正则表达式(?<!\r)\n
将匹配之前没有\r
字符的任何\n
字符。语法(?<!
expr
)
是negative look-behind assertion,意思是expr
必须不当前位置之前的部分相匹配。
它将用\ Environment.NewLine字符串替换\ n之前没有\ r的所有实例。此字符串是特定于平台的换行符(在Windows这将是字符串“\ r \ n”)
除了答案解释什么是正则表达式不(符合所有人\ n的不一个\ r在它之前),我只想指出,这种使用Replace()很可能从来没有必要,除非你有用户打字\ n的某种方式hellbent。即使这样,当使用文本作为整体时(即,在以某种方式提交数据之后),您可能不需要按下按键。
如果这是为了清理复制粘贴的文本,那么你可以重构它,只有当大量的文本已被改变时才运行。
你是说你每次按下某个键时都试图替换文档中的所有换行符?如果是这样,那么这就是性能问题的根源。无论如何,你为什么这样做? – 2009-07-28 16:04:44
如果你真的想经常使用正则表达式,请编译它__。 – Cheeso 2009-07-28 16:08:46