2010-04-16 59 views

回答

2

對於生成的字符串,任何可能的實現都應該有一個合理的最大長度。 如果在該正則表達式的任何地方有+*,可能性可能沒有結束。 Regexp::Genex認爲此。

+0

不幸的是「perl -MRegexp :: Genex =:all -le'字符串打印(」[a-z]「)'」雖然不起作用。我認爲它有()和[]集的錯誤。 – wibble 2010-10-22 12:30:43

0

我遇到過的任何解決方案都不能處理lookahead;正則表達式:: GENEX沒有,也沒有在這裏做的解決方案:

http://www.mail-archive.com/[email protected]/msg31051.html

雖然我同意HOP是一個真棒書,它真的只用正則表達式的一小部分交易「外的the-框」。

如果有人一個處理向前看符號的人都知道,那簡直太好了:/

+0

揹包問題(已知爲NP-完全)可以平凡地轉化爲確定是否存在任何由構造的正則表達式匹配的字符串(帶有向前看)。換句話說,這太難了。 – ephemient 2010-10-22 03:21:23

0

以防萬一有人發現它有用:

 
*$ cat bitfizz.pl* 
#!/usr/bin/perl 
use strict; 
if (($#ARGV+1)!=2) { print "usage $0 \n"; } 
my @r = &bitfizz($ARGV[0], $ARGV[1]); 
for(@r){ print "$_\n"; } 
sub bitfizz() { 
    $_[0]=join(",", split(//, $_[0])); 
    for(my $i=1; $i<=$_[1]; $i+=1) { $_=$_."{$_[0]}"; } 
    @r=glob($_); 
} 

那麼你可以做:

 
*perl bitfizz.pl "01" 8* 
00000000 
00000001 
00000010 
00000011 
00000100 
--snip-- 

所有排列位的字節位 或

 
*perl bitfizz.pl "ABCDEF" 2* 

例如

相關問題