写了几个测试程序,一点没发现规律,希望大家帮帮忙...一起学习

解决方案 »

  1.   

    原来回复的,有兴趣的话可以去看看。http://topic.csdn.net/u/20080503/01/3c82b040-43b9-4b44-847d-07b366285957.htmlhttp://topic.csdn.net/u/20080325/17/fb7a3e8d-029a-4d8e-89ae-77a9d28ec301.html
    http://topic.csdn.net/u/20080716/22/80cdd418-a0e9-4e7e-8435-df6d4bc11c4a.html
      

  2.   

    以(?开头,)结尾的都称为非捕捉组,在匹配完成后在内存中不保留匹配到的字符。非捕捉组的应用比较复杂,这里只能简单地说一下它们的意思。(?:X)X,作为非捕捉组
    与捕捉组()的意思一样也是将其作为一组进行处理,与捕捉组的区别在于不捕捉匹配的文本,
    仅仅作为分组。
    比如:要匹配123123这个,就可以写为(123)\1使用反向引用,这时只能用捕捉组,在匹配
    123后会保留在内存中,便于反向引用,而(?:123)在匹配完后则不会保留,区别仅在于此。(?idmsux-idmsux)Nothing,但是将匹配标志idmsuxon-off
    用于标志匹配,比如:表达式(?i)abc(?-i)def这时,(?i)打开不区分大小写开关,abc匹配
    不区分大小地进行匹配,(?-i)关闭标志,恢复不区分大小写,这时的def只能匹配def(?idmsux-idmsux:X)X,作为带有给定标志idmsuxon-off
    与上面的类似,上面的表达式,可以改写成为:(?i:abc)def,或者(?i)abc(?-i:def)(?=X)X,通过零宽度的正lookahead
    (?!X)X,通过零宽度的负lookahead
    (?=X)表示当前位置(即字符的缝隙)后面答应出现的字符,比如:表示式a(?=b),在字符串为
    ab时,可能匹配a,后面的(?=b)表示,a后面的缝隙,可以看作是零宽度。
    (?!X)表示当前位置后面不答应出现的字符(?<=X)X,通过零宽度的正lookbehind
    (?<!X)X,通过零宽度的负lookbehind
    这两个与上面两个类似,上面两个是向后看,这个是向前看(?>X)X,作为独立的非捕捉组
    匹配成功不进行回溯,这个比较复杂,也侵占量词“ ”可以通用,比如:\d 可以写为(?>\d )。