2010-12-03 6 views
3

Tenir compte de l'expression régulière suivante:expression régulière complexe

^[:;][-^]\)$ 

Liste toutes les chaînes qui correspondent exactement à cette expression ou, s'il y a plus de dix de ces chaînes, les décrire.

+5

Depuis c'est des devoirs: Qu'est-ce que vous avez à ce jour? – Reinderien

+0

Voulez-vous dire que vous devez écrire un programme qui répertorie toutes les chaînes? Vous voudrez peut-être modifier votre question (pour que cela sonne comme une question) – gideon

+0

Où êtes-vous coincé? Y a-t-il un symbole particulier ou une partie de l'expression régulière qui vous trouble? – jtdubs

Répondre

6

En supposant que les proches paren est fausse, voici une solution lisse:

% echo {':',';'}{'-','^'}\) 
:-) :^) ;-) ;^) 

Ce qui est bien sûr:

% perl -le 'print for <{:,;}{-,^})>' 
:-) 
:^) 
;-) 
;^) 

est-ce pas cool?

Et puis bien sûr, il y a ceci:

   #!/usr/bin/perl 
      use   5.010                      ; 
     $stdout = 124.102.109.116; 
       open 
       stdout                        ;   
       use less 
    ${"\42"}   =   "\54"                     ; 
        say 
        for 
       @224                        = 
        eval 
        join 
       /\/\/\/∖/                    => 
        map 
       {"<$_>"} 
        join 
       /\/\/\/∖/                    => 
        map 
       {"{@$_}" } 
      [qw{ | [  } ]                     => 
     [qw{ : ; % #  } ]                     => 
    [qw{ ^= * _ ~ } ]                    => 
[qw{ /v ) | o 3 I } ] 

qui produit délicieusement ceci:

|:^/ |:^v |:^) |:^| |:^o |:^3 |:^I |:=/ |:=v |:=) |:=| |:=o |:=3 
|:=I |:_/ |:_v |:_) |:_| |:_o |:_3 |:_I |:~/ |:~v |:~) |:~| |:~o 
|:~3 |:~I |;^/ |;^v |;^) |;^| |;^o |;^3 |;^I |;=/ |;=v |;=) |;=| 
|;=o |;=3 |;=I |;_/ |;_v |;_) |;_| |;_o |;_3 |;_I |;~/ |;~v |;~) 
|;~| |;~o |;~3 |;~I |%^/ |%^v |%^) |%^| |%^o |%^3 |%^I |%=/ |%=v 
|%=) |%=| |%=o |%=3 |%=I |%_/ |%_v |%_) |%_| |%_o |%_3 |%_I |%~/ 
|%~v |%~) |%~| |%~o |%~3 |%~I |#^/ |#^v |#^) |#^| |#^o |#^3 |#^I 
|#=/ |#=v |#=) |#=| |#=o |#=3 |#=I |#_/ |#_v |#_) |#_| |#_o |#_3 
|#_I |#~/ |#~v |#~) |#~| |#~o |#~3 |#~I [:^/ [:^v [:^) [:^| [:^o 
[:^3 [:^I [:=/ [:=v [:=) [:=| [:=o [:=3 [:=I [:_/ [:_v [:_) [:_| 
[:_o [:_3 [:_I [:~/ [:~v [:~) [:~| [:~o [:~3 [:~I [;^/ [;^v [;^) 
[;^| [;^o [;^3 [;^I [;=/ [;=v [;=) [;=| [;=o [;=3 [;=I [;_/ [;_v 
[;_) [;_| [;_o [;_3 [;_I [;~/ [;~v [;~) [;~| [;~o [;~3 [;~I [%^/ 
[%^v [%^) [%^| [%^o [%^3 [%^I [%=/ [%=v [%=) [%=| [%=o [%=3 [%=I 
[%_/ [%_v [%_) [%_| [%_o [%_3 [%_I [%~/ [%~v [%~) [%~| [%~o [%~3 
[%~I [#^/ [#^v [#^) [#^| [#^o [#^3 [#^I [#=/ [#=v [#=) [#=| [#=o 
[#=3 [#=I [#_/ [#_v [#_) [#_| [#_o [#_3 [#_I [#~/ [#~v [#~) [#~| 
[#~o [#~3 [#~I                
+0

non, il vous manque le \\), regardez de près la regex –

+0

le paren n'est pas, comme la réponse est comme 'echo {':', ';'} ' - ','^'} \\) 'renvoie' :-): ^) ;-); ^) ' –

+1

L'astuce de l'écho shell est cool. Cela a fonctionné pour moi dans csh, bash et ksh, mais pas dans sh. –