.Net新的正则表达式(@“[] {2,}”,选项)的含义

时间:2010-07-07 07:55:23

标签: .net regex

此代码段中发生了什么?

    RegexOptions options = RegexOptions.None;
    Regex regex = new Regex(@"[ ]{2,}", options);
    string outStr = regex.Replace(inStr, @" ");

我正在寻找的是用一个空格替换任何“白色”空间序列(包括TAB,CR,LF)。

4 个答案:

答案 0 :(得分:3)

让我们分解一下:

[ ]          <-- matches a single space
{2,}         <-- previous token is repeated 2 or more times

所以这将匹配2个或更多连续的空格。

然后是.Replace调用,这将用一个空格替换那些2个或更多空格的序列。

答案 1 :(得分:3)

[ ]表示一个字符组(在这种情况下只有一个空格) {2,}表示“至少2次”

因此,此代码用一个

替换空格的多个出现

更容易编写(和读取):" +"(一个或多个空格)然后用一个替换它们(毕竟不应该慢)

答案 2 :(得分:2)

这一行:

Regex regex = new Regex(@"[ ]{2,}", options);

创建一个正则表达式对象,该对象将查找2个或更多相邻空格的出现次数。 [ ]创建一个包含空格的字符组 - 它本来可以写成,但是我的猜测会不那么可读。 {2,}表示前一个字符(或字符组)的2个或更多(无界)。

请参阅this方便的RegEx备忘单,了解.NET正则表达式语法。

此行找到所有此类事件并将其替换为一个空格:

string outStr = regex.Replace(inStr, @" ");

replace函数在第一个字符串参数中查找正则表达式的所有匹配项,并用第二个字符串替换它们。

在这两种情况下,都不需要逐字字符串文字(以@开头)。

答案 3 :(得分:2)

@ - verbatim string literal;字符不会被解释,直到下一个引用

[] - 在此括号中我们指定是否允许使用whit字符。这个([])作者想要使用的任何空格只能替换空格,但为此应该使用pattern \ s

{2,} - 至少两次

可能这个正则表达式必须删除双重空格