最近在看正则表达式,有个地方疑惑,请高手指教,不胜感激!
var strs = Regex.Split("UUUUUdefghiOOOOOjklmnFFFFFFopqrst", "([a-z])\\1+", RegexOptions.IgnoreCase);
最后strs的结果如下
{string[7]}
[0]: ""
[1]: "U"
[2]: "defghi"
[3]: "O"
[4]: "jklmn"
[5]: "F"
[6]: "opqrst"
1、为什么U、O、F也会出现在数组中?
2、为什么第一个里面是个""?
3、怎么样让产生的结果中,没有U、O、F和""这些?
感谢
你想通过什么规则进行分隔?
我这边测试没出现第2个问题。
以重复字符(2个以上都分割)为标识,来分割字符串
@Jim_技迷:
为什么U、O、F也会出现在数组中?是因为([a-z])所加的括号,但括号不能去掉,因为后面的\1需要引用它。
我找到的解决方法是分两步走,代码如下:
var text = "UUUUUdefghiOOOOOjklmnFFFFFFopqrst"; var str = Regex.Replace(text, "([a-z])\\1+", ",", RegexOptions.IgnoreCase); var strs = str.Split(',');
@dudu: 哦,谢谢。
@dudu: 其实我不是想解决问题,是想弄明白他的执行过程,呵呵
@Jim_技迷: 可以看反编译出来的Regex.Split的代码。
额。。。。啊。。。。。