正則表達式中的反向引用

1.反向引用須要使用到分組,分組就是使用()括起來的部分爲一個總體,在進行分組匹配時的原則是:由外向內,由左向右3d


2.反向引用如:\1,\2等
          \1:表示的是引用第一次匹配到的()括起來的部分
          \2:表示的是引用第二次匹配到的()括起來的部分
 
          (1)例:
               String regex = "^(\\d)\\1$";
               首先這裏是匹配兩位,\d一位,\1又引用\d一位 這裏的\1會去引用(\d)匹配到的內容,由於(\d)是第一次匹配到的內容。
              如:str = "22"時,(\\d)匹配到2,因此\1引用(\\d)的值也爲2,因此str="22"能匹配
                    str = "23"時,(\\d)匹配到2,由於\1引用(\\d)的值2,而這裏是3,因此str="23"不能匹配
          (2)例:
               String regex = "^(\\d)\\1[0-9](\d)\1{2}";
               注意在後面第二個(\d)\1{2}中的\1,這裏的\1並不會去匹配他前面的(\d),而是匹配第一個(\\d),
               如:第一個(\d)爲3時,則第一個\1也爲3,一樣最後那個\1也爲3,因此結果能夠是335933,332533
                    而不是336444,339888
             
 
          (3)例:
               String regex = " ^(\d)\1[0-9](\d)\2{2}$";
               這裏使用了\2引用第二次匹配到的分組,這裏第二次匹配的分組爲\2前面的(\d), 這裏的{2}指的是\2的值出現兩次
               如:第一個(\d)爲4時,\1引用第1個(\d)也爲4,第二個(\d)爲5時,\2引用第二個(\d)爲5,因此結果能夠是:447555,440222
          
          
          
 
          (4)例:
               String regex = " ^((\d)3)\1[0-9](\d)\2{2}$";
               當匹配中的分組有嵌套時,是從外向裏匹配的,其次在由左向右匹配
               這裏主要是分析匹配到分組的順序,首先匹配((\d)3)這整個部分,其次匹配((\d)3)裏面的(\d),第三次匹配時最後一個\2前面的(\d)
               如:如((\d)3)中的(\d)爲2時,((\d)3)的值爲23,此時\1爲((\d)3)的值1,而\2引用((\d)3)中的(\d)的值3,第三個(\d)爲5時,此時\3引用第三個(\d)的值5,因此結果能夠有:23238522,23230522,
          
               
相關文章
相關標籤/搜索