Chinaunix首页 | 论坛 | 博客
  • 博客访问: 467210
  • 博文数量: 55
  • 博客积分: 2603
  • 博客等级: 少校
  • 技术积分: 750
  • 用 户 组: 普通用户
  • 注册时间: 2006-12-31 02:30
文章分类

全部博文(55)

文章存档

2011年(1)

2010年(22)

2009年(17)

2008年(15)

我的朋友

分类:

2008-03-16 20:10:09

昨天Python會課時,遇到Lee向我介紹Haskell版的文本生成程序。我一時興起,就拿他的測試數據,想重現一下Perl的實現。結果大吃一驚。我的代碼無論如何都實現不出想要的效果。難道睡了一覺,就不會寫程序了?
回家一試,又是大吃一驚,我現場寫的代碼與以前的存檔并沒有出入,問題在于這個方法本來就不能達到預期!事實上,只要測試文本超過一定的長度,用正則表達式就無法到達所有的路徑,不知道是Perl識破了我的陰謀?還是我的正則表達式不對?
總之,現階段,我只有乖乖的用平民技術來寫這個實現啦。先放一放,等我空出手來再研究Perl的正則引擎。感覺《精通正則表達式》中那個遞歸嵌套的方式可以拿來利用一下的說……
下附平民代碼:

my $sentence = "refractory anemia with excess blasts in a b c d e f g";

my @words = $sentence =~ m/\w+/g;

my @parts = map {[@words[$_..$#words]]} 0..$#words;


foreach my $part (@parts) {
    my @sections = map {[@$part[0..$_]]} 0..scalar(@$part)-1;
    foreach (@sections) {
        print "@$_\n"
    }
}

阅读(759) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~