亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

Chinaunix

標(biāo)題: 關(guān)于split 的捕獲括號(hào),理解不能 請教下老司機(jī) [打印本頁]

作者: 45177659    時(shí)間: 2014-11-16 19:28
標(biāo)題: 關(guān)于split 的捕獲括號(hào),理解不能 請教下老司機(jī)
As with regular pattern matching, any capturing parentheses
that are not matched in a "split()" will be set to "undef" when
returned:

       @fields = split /(A)|B/, "1A2B3";
       # @fields is (1, 'A', 2, undef, 3)

在split的man文檔最后有這樣一段話,簡單翻譯下:作為正則表達(dá)式匹配,
任何在split()中沒有匹配的捕獲括號(hào),將會(huì)被設(shè)成undef,然后返回。這個(gè)東西
是怎么理解的?

這是我實(shí)驗(yàn)的結(jié)果,哪位老司機(jī)能指點(diǎn)下,多謝!
Administrator@SWYWXQ1DHSU3MJ6 ~
$  perl -e '@fields = split /(A)|B/, "1A2B3"; print join "--", @fields'
1--A--2----3
Administrator@SWYWXQ1DHSU3MJ6 ~
$ perl -e '@fields = split /(A)|(B)|C/, "1A2BC3"; print join "--", @fields'
1--A----2----B--------3
作者: jason680    時(shí)間: 2014-11-16 20:13
回復(fù) 1# 45177659

1. without capture
$ perl -le '@fields = split /A|B|C/, "1A2B3C4"; print join ",", @fields'
1,2,3,4

2. capture together
$ perl -le '@fields = split /(A|B|C)/, "1A2B3C4"; print join ",", @fields'
1,A,2,B,3,C,4

usually, we don't use follow ways:
$ perl -le '@fields = split /(A)|B|C/, "1A2B3C4"; print join ",", @fields'
1,A,2,,3,,4

$ perl -le '@fields = split /A|(B)|C/, "1A2B3C4"; print join ",", @fields'
1,,2,B,3,,4

$ perl -le '@fields = split /A|B|(C)/, "1A2B3C4"; print join ",", @fields'
1,,2,,3,C,4

$ perl -le '@fields = split /(A)|(B)|C/, "1A2B3C4"; print join ",", @fields'
1,A,,2,,B,3,,,4

$ perl -le '@fields = split /(A)|(B)|(C)/, "1A2B3C4"; print join ",", @fields'
1,A,,,2,,B,,3,,,C,4
作者: 45177659    時(shí)間: 2014-11-16 20:23
回復(fù) 2# jason680

i see! thanks


   
作者: flw    時(shí)間: 2014-11-17 11:09
本帖最后由 flw 于 2014-11-19 10:22 編輯

轉(zhuǎn)載一下。
  1. 發(fā)信人: flw (還沒想好), 信區(qū): Perl
  2. 標(biāo)  題: Re: 不得不說,perl太需要記憶了
  3. 發(fā)信站: 水木社區(qū) (Thu Jul  5 23:06:32 2012), 轉(zhuǎn)信

  4. 這個(gè)就是捕獲的意思。

  5. @F = split $R, $S 類似于下面的代碼(不論帶不帶括號(hào)、哪里帶括號(hào)、帶幾個(gè)括號(hào)):

  6. while( @s = $S =~ $R ){
  7.     push @F, 轉(zhuǎn)載一下。;
  8.     push @F, @s;
  9.     $S = ;
  10. }

  11. push @F, $S;

  12. 由此可見,split 里的正則表達(dá)式捕獲和普通的正則表達(dá)式捕獲用法是完全一致的。

  13. 【 在 arp (@arp) 的大作中提到: 】
  14. : 怎么一樣啊。
  15. : 明顯不一樣啊。
  16. : ()在正則表達(dá)式捕獲里面是group
  17. : ()在這里哪里有g(shù)roup的意思啊?
復(fù)制代碼

作者: 45177659    時(shí)間: 2014-11-18 18:49
回復(fù) 4# flw

    push @F, 轉(zhuǎn)載一下。;
    push @F, @s;
    $S = ;


有點(diǎn)看不懂啊,沒抄錯(cuò)吧 版主
   
作者: 旋轉(zhuǎn)小馬    時(shí)間: 2014-11-19 09:40
跟著大神學(xué)代碼~~~回復(fù) 2# jason680


   
作者: flw    時(shí)間: 2014-11-19 10:22
尼瑪,不知道怎么觸發(fā)了論壇的隱藏功能,
我編輯了還是改不過來。

看這里吧:

http://www.newsmth.net/bbscon.php?bid=226&id=61643
作者: jason680    時(shí)間: 2014-11-19 10:51
@flw @45177659

  這個(gè)就是捕獲的意思。

@F = split $R, $S 類似于下面的代碼(不論帶不帶括號(hào)、哪里帶括號(hào)、帶幾個(gè)括號(hào)):

while( @s = $S =~ $R ){
    push @F, $`;
    push @F, @s;
    $S = $';
}

push @F, $S;
作者: 45177659    時(shí)間: 2014-11-20 20:00
回復(fù) 8# jason680

有理有據(jù),令人信服!:wink:

   




歡迎光臨 Chinaunix (http://www.72891.cn/) Powered by Discuz! X3.2