Regex reg = new Regex(@"true|false\s*,", RegexOptions.IgnoreCase);
Match m = reg.Match(t);
当t="true,"时m.length=4,当t="false,"时m.length=6
不知道是什么原因
Match m = reg.Match(t);
当t="true,"时m.length=4,当t="false,"时m.length=6
不知道是什么原因
调试欢乐多
-------------
注意后面有一个\s,它也会占一个长度的.
@"(true|false)\s*,"否则就会成为(true)|(false\s*)
这个正则表达式的意义,就是“true”或者“false\s*,”t="true,"时,正则匹配到的是“true”
t="false,"时,正则匹配到的是"false,"按楼主的意思,应该改为
Regex reg = new Regex(@"(true|false)\s*,", RegexOptions.IgnoreCase);
Regex reg = new Regex(@"true ¦false\s*,", RegexOptions.IgnoreCase);
你的正则表达式定义
@"true",是一种匹配,@"false\s*",是一种匹配。
当t="true,",你的匹配是"true",所以有4个字符,即length=4。
当t="false," ,你的匹配是"false," ,注意不是“false”,多了一个字符。因为\s*指代0到多个非空字符。所以逗号正好也是匹配项的。
所以最后的length=6,而不是5
在t="false," 时
这里的\s*是不匹配任何内容的,由\s*后的“,”来匹配"false,"中的“,”,最后的m.length=6是false的5个字符加“,”为6个字符