.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建议的那样。