.Net新的正则表达式(@";[]{2,}";,options)是什么意思

.Net新的正则表达式(@";[]{2,}";,options)是什么意思,.net,regex,.net,Regex,这个代码段中发生了什么 RegexOptions options = RegexOptions.None; Regex regex = new Regex(@"[ ]{2,}", options); string outStr = regex.Replace(inStr, @" "); 我要找的是用单个空格替换任何“白色”空格序列(包括TAB、CR、LF) 让我们把它分解一下: [ ] <-- matches a single space {2,

这个代码段中发生了什么

    RegexOptions options = RegexOptions.None;
    Regex regex = new Regex(@"[ ]{2,}", options);
    string outStr = regex.Replace(inStr, @" ");
我要找的是用单个空格替换任何“白色”空格序列(包括TAB、CR、LF)

让我们把它分解一下:

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

[]
[]
表示一个字符组(在本例中只有一个空格)
{2,}
表示“至少2次”

因此,此代码将一个空格的多个出现替换为一个

哪一个更容易写(和读)为:
“+”
(一个或多个空格),然后用一个空格替换它们(毕竟不会慢)

这一行:

Regex regex = new Regex(@"[ ]{2,}", options);
创建一个正则表达式对象,该对象将查找两个或更多相邻空格的引用。
[]
创建了一个包含空格的字符组-它可以被写成
,但我猜这样就不那么可读了。
{2,}
表示前一个字符(或字符组)的2个或多个(无界)

有关.NET正则表达式语法,请参见handy正则表达式备忘单

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

string outStr = regex.Replace(inStr, @" ");
replace函数在第一个字符串参数中查找正则表达式的所有匹配项,并用第二个字符串替换它们


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

@-逐字字符串文字;这些字符直到下一个引号才被解释

[]-在此括号中,我们指定是否允许使用whit字符。此([])任何空白作者可能只想使用替换空间,但为此应使用模式\s

{2,}-至少两次


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

如果您想要所有的空格,您应该使用
@“\s{2,}”
@“\s+”
,正如Vash建议的那样。