Schrift
[thread]5823[/thread]

RegEx: # suchen

Tags: Ähnliche Threads

Leser: 2


<< |< 1 2 >| >> 11 Einträge, 2 Seiten
pktm
 2003-10-14 21:34
#63670 #63670
User since
2003-08-07
2921 Artikel
BenutzerIn
[Homepage]
user image
Hallo!
Meine RegEx:
Code: (dl )
1
2
3
4
5
6
7
8
my @config = extractFile( 'c:/apache/cgi-bin/cms/gcp/1_0/txt/gcp.conf' );
my $index_file = 0;
foreach( @config ) {
if( $_ =~ m|index_file =| and $_ =! m/#/ ){
print "$_\n";
$index_file = s/index_file = //;
}
}

Ich möchte damit aus der Datei
Code: (dl )
1
2
# index_file = Pfad
index_file = "c:/apache/cgi-bin/cms/gcp/1_0/txt/index.txt";

die entsprechende, nicht kommentierte Zeile herausfiltern.
Nur wenn ich das wie oben angegeben mache, und auch wenn ich # escape (\#) erhalte ich nur eine 1 als Rückgabewert.
Ansonsten nicht, sondern den Wert.
Wieso?
mfg pktm
http://www.intergastro-service.de (mein erstes CMS :) )
DS
 2003-10-14 21:40
#63671 #63671
User since
2003-08-04
247 Artikel
BenutzerIn
[default_avatar]
Also ich hab's noch ned ganz durch, aber ein Fehler dürfte mal "=!" sein... du meinst doch wohl "!~" oder?

Nachtrag: Das nächste ist, daß $index_file immer auf 1 gesetzt wird, da die Ersetzung s/index_file = //; genau einmal durchgeführt wird...

Falls das Format so fest ist, dann würd' ich's mal mit probieren mit:

Code (perl): (dl )
1
2
3
foreach (@config) {
  if ( /^index_file = "(.+)";$/ ) { $index_file = $1; last }
}

(Weder getestet noch durchdacht. ;))

Nachtrag: Das komische Ding da soll '$'.'1'.';' sein...\n\n

<!--EDIT|DS|1066154102-->
havi
 2003-10-15 10:59
#63672 #63672
User since
2003-08-04
2036 Artikel
BenutzerIn
[Homepage]
user image
Alternativ kannst du dir auch mal

Code: (dl )
use File::Basename;


anschauen!

Gruss
Relais
 2003-10-16 01:23
#63673 #63673
User since
2003-08-06
2254 Artikel
ModeratorIn
[Homepage] [default_avatar]
[quote=havi,15.10.2003, 08:59]Alternativ kannst du dir auch mal

Code: (dl )
use File::Basename;


anschauen!

Gruss[/quote]
@havi: was gibt es denn dort, das etwas mit der Aufgabe zu tun hat?
Erst denken, dann posten --
27. Deutscher Perl- u. Raku -Workshop 12. bis 14. Mai 2025 in München.

Winter is Coming
havi
 2003-10-16 11:19
#63674 #63674
User since
2003-08-04
2036 Artikel
BenutzerIn
[Homepage]
user image
[quote=Relais,15.10.2003, 23:23][quote=havi,15.10.2003, 08:59]Alternativ kannst du dir auch mal

Code: (dl )
use File::Basename;


anschauen!

Gruss[/quote]
@havi: was gibt es denn dort, das etwas mit der Aufgabe zu tun hat?[/quote]
Anscheinend hab ich das Problem nicht ganz verstanden...
pktm
 2003-10-17 13:18
#63675 #63675
User since
2003-08-07
2921 Artikel
BenutzerIn
[Homepage]
user image
Nun, nach nochmaligem Durchsehen bin ich so weit:
Code: (dl )
1
2
3
4
5
6
7
8
foreach( @config ) {
if( $_ =~ m|index_file =| and $_ !~ m/\#/ ){
$index_file =~ s/index_file = \"//;
$index_file =~ s/\"\;$//;
print "FILE: $index_file \n";
last;
}
}

Das problem ist nur, dass ich die Anzahl der Matches zurück bekomme, und nicht das, was ich haben will, nämlich den Dateipfad.
Das mit der Pipe verstehe ich leider nicht so ganz, kann mir das mal wer erklären?

Im Endeffekt brauche ich nur das, was von der Substitution übrig gelassen wird, sowas wie $1 bei Pattern-Matching.
mfg pktm
http://www.intergastro-service.de (mein erstes CMS :) )
renee
 2003-10-17 13:25
#63676 #63676
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Code: (dl )
1
2
3
4
5
6
foreach(@config){
 if($_ =~ /^index_file/){
   $_ =~ s/"([^"]+)"/$ 1/; # ohne Leezeichen zwischen $ und 1
   print $_;
 }
}


Die Pipes können genausogut durch / oder ein anderes Zeichen ersetzt werden.\n\n

<!--EDIT|renee|1066382748-->
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
Strat
 2003-10-17 20:48
#63677 #63677
User since
2003-08-04
5246 Artikel
ModeratorIn
[Homepage] [default_avatar]
Nebenbei: haeufig ist folgendes besser lesbar (und vielleicht auch schneller):
Code: (dl )
1
2
3
4
5
6
7
8
foreach (@config) {
 next if /^\#/; # skip comments

 if ( s/"([^"]+)"/$1/ ) {
   print $_;
 } # if

} # for
\n\n

<!--EDIT|Strat|1066409359-->
perl -le "s::*erlco'unaty.'.dk':e,y;*kn:ai;penmic;;print"
http://www.fabiani.net/
pktm
 2003-10-17 21:19
#63678 #63678
User since
2003-08-07
2921 Artikel
BenutzerIn
[Homepage]
user image
Ah, ok, danmke.
Ich meinet übrigens diese Pipe hier:
Code: (dl )
1
2
3
foreach (@config) {
if ( /^index_file = "(.+)";$/ ) { $index_file = |; last }
}

aus dem Beitrag von DS :D
mfg pktm
http://www.intergastro-service.de (mein erstes CMS :) )
DS
 2003-10-18 00:50
#63679 #63679
User since
2003-08-04
247 Artikel
BenutzerIn
[default_avatar]
[quote=pktm,17.10.2003, 19:19]Ah, ok, danmke.
Ich meinet übrigens diese Pipe hier:
Code: (dl )
1
2
3
foreach (@config) {
 if ( /^index_file = "(.+)";$/ ) { $index_file = |; last }
}

aus dem Beitrag von DS :D
mfg pktm[/quote]
Diese Pipe da wäre da in der Tat recht sinnlos... ;)

Eigentlich stand da $1, aber beim Speichern wird aus $1 innerhalb von [ perl ] [ /perl ] anscheinend so ein Pipe ähnliches Zeichen... (also mein Browser zeigt zumindest nicht | an sondern sowas ähnliches... naja egal)

Tut mir leid, daß ich des damals a bisserl schlampig hingehaun hab', aber ich hatte da ziemliches Kopfweh...
<< |< 1 2 >| >> 11 Einträge, 2 Seiten



View all threads created 2003-10-14 21:34.