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

  免費注冊 查看新帖 |

Chinaunix

  平臺 論壇 博客 文庫
123下一頁
最近訪問板塊 發(fā)新帖
查看: 9002 | 回復: 28
打印 上一主題 下一主題

有取舍的split [復制鏈接]

論壇徽章:
3
摩羯座
日期:2013-09-04 12:01:36申猴
日期:2013-10-23 12:12:23CU十二周年紀念徽章
日期:2013-10-24 15:41:34
跳轉到指定樓層
1 [收藏(0)] [報告]
發(fā)表于 2013-09-13 17:31 |只看該作者 |倒序瀏覽
本帖最后由 grshrd49 于 2013-09-13 17:32 編輯

$s = 'a,b,c,d,e,[e1,e2,[e21,e22,e33],e3],f';

你們看這段字符串
我想要分解這段字符串
split /,/,$s;
很容易就完成了
但是我在第一次split的時候 不想拆分[]中的字符串 我該則么處理呢?
[]還會嵌套
誰能給點好的思路

論壇徽章:
7
戌狗
日期:2013-12-15 20:43:38技術圖書徽章
日期:2014-03-05 01:33:12技術圖書徽章
日期:2014-03-15 20:31:17未羊
日期:2014-03-25 23:48:20丑牛
日期:2014-04-07 22:37:44巳蛇
日期:2014-04-11 21:58:0915-16賽季CBA聯(lián)賽之青島
日期:2016-03-17 20:36:13
2 [報告]
發(fā)表于 2013-09-13 21:47 |只看該作者
這個問題我糾結了一晚,
我的:
  1. my $s = 'a,b,c,d,e,[e1,e2,[e21,e22,e33],e3],f';
  2. my ( $F, @s );
  3. for ( split /,/, $s ) {
  4.     $F ? $s[-1] .= ",$_" : push @s, $_;
  5.     /^\[/ ? $F++ : /\]$/ ? $F-- : undef;
  6. }
  7. say for @s;
復制代碼

論壇徽章:
3
摩羯座
日期:2013-09-04 12:01:36申猴
日期:2013-10-23 12:12:23CU十二周年紀念徽章
日期:2013-10-24 15:41:34
3 [報告]
發(fā)表于 2013-09-13 23:07 |只看該作者
本帖最后由 grshrd49 于 2013-09-13 23:09 編輯

回復 2# rubyish

寫的秒! for里的第二行 三目中的三目 有點搞腦子!
今天加班有點晚了, 明天我清醒了 要好好研究下你的腳本

我是設想用遞歸的形式來層層分離括號中的數(shù)據(jù), 但是perl在處理字符串的時候不像在處理數(shù)組那樣, 所以我對這個問題就一直卡在這里

論壇徽章:
1
天蝎座
日期:2014-02-28 16:08:53
4 [報告]
發(fā)表于 2013-09-14 23:24 |只看該作者
本帖最后由 snriyt 于 2013-09-15 11:08 編輯


奇怪。。。

求職 : 軟件工程師
論壇徽章:
3
程序設計版塊每日發(fā)帖之星
日期:2015-10-07 06:20:00程序設計版塊每日發(fā)帖之星
日期:2015-12-13 06:20:00程序設計版塊每日發(fā)帖之星
日期:2016-05-05 06:20:00
5 [報告]
發(fā)表于 2013-09-15 10:34 |只看該作者
這個問題有點復雜,但可以拆成幾個相對簡單的問題

1. 將 [..]的結構中的逗號替換成別的符號。
2. 將嵌套的結構都替換掉
3. 按照逗號拆分。
4. 將拆分后的內(nèi)容中的逗號恢復

論壇徽章:
1
2015年辭舊歲徽章
日期:2015-03-03 16:54:15
6 [報告]
發(fā)表于 2013-09-15 12:45 |只看該作者
本帖最后由 flw 于 2013-09-15 12:46 編輯

給你們介紹個好玩的
  1. flw@waker:~$ ./ttt.pl 'a,b,c,d,e,[e1,e2,[e21,e22,e33],e3],f'

  2. ### $result: [
  3. ###            'a',
  4. ###            'b',
  5. ###            'c',
  6. ###            'd',
  7. ###            'e',
  8. ###            [
  9. ###              'e1',
  10. ###              'e2',
  11. ###              [
  12. ###                'e21',
  13. ###                'e22',
  14. ###                'e33'
  15. ###              ],
  16. ###              'e3'
  17. ###            ],
  18. ###            'f'
  19. ###          ]
  20. flw@waker:~$ cat ttt.pl
  21. #!/usr/bin/perl

  22. use strict;
  23. use warnings;
  24. use Smart::Comments;

  25. use Parse::RecDescent;

  26. my $parser = new Parse::RecDescent(
  27. <<'EOD'
  28.     chars: /[^,\[\]]+/
  29.     unit: chars | in_bracket
  30.     in_bracket: '[' unit_list ']'       { $return = $item[2] }
  31.     unit_list: unit ',' unit_list       { $return = [ $item[1], @{ $item[3] } ] }
  32.         | unit                          { $return = [ $item[1] ] }
  33.     text: unit_list eos                 { $return = $item[1] }
  34.     eos: /\Z/
  35. EOD
  36. ) or die "compile";

  37. my $s = shift;
  38. my $result = $parser->text( $s ) or die "Bad text!\n";
  39. ### $result
  40. flw@waker:~$
復制代碼

論壇徽章:
6
丑牛
日期:2014-03-21 15:42:04子鼠
日期:2014-04-12 11:50:17處女座
日期:2014-09-01 09:25:1115-16賽季CBA聯(lián)賽之吉林
日期:2015-12-22 14:01:5215-16賽季CBA聯(lián)賽之廣東
日期:2016-03-08 18:49:422016科比退役紀念章
日期:2016-07-06 12:19:55
7 [報告]
發(fā)表于 2013-09-15 21:39 |只看該作者
本帖最后由 stanley_tam 于 2013-09-16 00:15 編輯

回復 1# grshrd49
  1. my $s = 'a,b,c,d,e,[e1,e2,[e21,e22,e33],e3],f';
  2. my @parts = ();
  3. push @parts, split /,(?! .* \] )/x, $_  for split m{(:? \[ .* \])}x, $s;
復制代碼
只有一個[[]]元素的情況下勉強可以。。{:3_196:}

論壇徽章:
3
摩羯座
日期:2013-09-04 12:01:36申猴
日期:2013-10-23 12:12:23CU十二周年紀念徽章
日期:2013-10-24 15:41:34
8 [報告]
發(fā)表于 2013-09-16 21:13 |只看該作者
回復 7# stanley_tam


其實我最近在看json數(shù)組, 哈哈! 所以就想到了這個問題

論壇徽章:
3
摩羯座
日期:2013-09-04 12:01:36申猴
日期:2013-10-23 12:12:23CU十二周年紀念徽章
日期:2013-10-24 15:41:34
9 [報告]
發(fā)表于 2013-09-16 21:15 |只看該作者
本帖最后由 grshrd49 于 2013-09-16 21:16 編輯

回復 5# 104359176


    我有想過這個辦法! 但是這個用這個中間方法要是能解決問題 ,其實就可以從根本解決我這個問題. 你說是嗎?!?!?!? 哈哈
問題就在于, 很難從嵌套的括號中替換字符串

論壇徽章:
3
摩羯座
日期:2013-09-04 12:01:36申猴
日期:2013-10-23 12:12:23CU十二周年紀念徽章
日期:2013-10-24 15:41:34
10 [報告]
發(fā)表于 2013-09-16 21:19 |只看該作者
回復 6# flw


這段代碼則么解釋呢?
use Smart::Comments;
use Parse::RecDescent;
這兩個包起什么作用阿?!
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則 發(fā)表回復

  

北京盛拓優(yōu)訊信息技術有限公司. 版權所有 京ICP備16024965號-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報專區(qū)
中國互聯(lián)網(wǎng)協(xié)會會員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關心和支持過ChinaUnix的朋友們 轉載本站內(nèi)容請注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP