Schrift
[thread]13114[/thread]

Dringend! Brauche Hilfe bei regulären Ausdrücken

Leser: 1


<< |< 1 2 >| >> 14 Einträge, 2 Seiten
perlniete
 2009-02-09 00:01
#118713 #118713
User since
2009-02-08
10 Artikel
BenutzerIn
[default_avatar]
Hallo,

Ich schreibe morgen eine Bioinformatikklausur und ich bin kurz vorm verzweifeln und hoffe nun hier Hilfe zu finden. Vorab, ich versuche mir das lernen nicht einfach zu machen indem ich euch die Probleme lösen lasse, denn ich habe bevor ich hier eine Frage stelle diverse Internetseiten und Bücher zu rate gezogen; finde jedoch einfach nicht den Zugang zu diesem Thema, bzw versteh die erklärungen dazu nicht.Folgende Probleme (für euch wahrscheinlich Problemchen):

Wir sollen in der Klausur unteranderem reguläre Ausdrücke erklären. Einige davon konnte ich bereits lösen andere jedoch treiben mich an den Rand des wahnsinns....

1) $iub =~ s/\^//g;

$iub steht ja einfach nur für einen String. s für ersetzen. Aber dann kommen meine Probleme. Das ^ steht ja für den zeilenanfang. Heißt das jetz der soll in dem String den Zeilenanfang durch nichts ersetzen?

2)$line =~ /^\s*$/
wenn \s für Leerzeichen steht heißt das dann in dem String sollen vom Zeilenanfang bis zum Zeilenende beliebig viele Leerzeichen stehen?

3) if ( $line =~ /^\s*/ ) {exit; } Diese Abfrage führt dazu dass das Programm auf Eingabe von <Return> abgebrochen wird, allerdings versteh ich nicht wieso, der sucht doch da auch nur nach Leerzeichen oder nicht?

Ich hoffe Ihr könnt mir helfen!

Vielen vielen dank an jeden der sich die Mühe macht mir zu helfen!
moritz
 2009-02-09 00:17
#118714 #118714
User since
2007-05-11
923 Artikel
HausmeisterIn
[Homepage]
user image
Es würde reichen, wenn du die Frage einmal stellst...

perlniete+2009-02-08 23:01:18--
1) $iub =~ s/\^//g;

$iub steht ja einfach nur für einen String. s für ersetzen. Aber dann kommen meine Probleme. Das ^ steht ja für den zeilenanfang. Heißt das jetz der soll in dem String den Zeilenanfang durch nichts ersetzen?


Ein Backslash raubt dem ^ seine Sonderbedeutung. Es werden also einfach nur alle ^-Zeichen aus $iub gelöscht


Quote
2)$line =~ /^\s*$/
wenn \s für Leerzeichen steht heißt das dann in dem String sollen vom Zeilenanfang bis zum Zeilenende beliebig viele Leerzeichen stehen?


Wenn mit "Leerzeichen" nicht nur blanks, sondern auch tabs, vertical tabs und andere Whitespaces meinst - ja.

Quote
3) if ( $line =~ /^\s*/ ) {exit; } Diese Abfrage führt dazu dass das Programm auf Eingabe von <Return> abgebrochen wird, allerdings versteh ich nicht wieso, der sucht doch da auch nur nach Leerzeichen oder nicht?


Ja, aber er sucht auch nach Null whitespaces am Anfang des Strings, und die werden natürlich immer gefunden - die Regex matcht also jeden String.
perlniete
 2009-02-09 00:33
#118715 #118715
User since
2009-02-08
10 Artikel
BenutzerIn
[default_avatar]
Zitat:

3) if ( $line =~ /^\s*/ ) {exit; } Diese Abfrage führt dazu dass das Programm auf Eingabe von <Return> abgebrochen wird, allerdings versteh ich nicht wieso, der sucht doch da auch nur nach Leerzeichen oder nicht?


Ja, aber er sucht auch nach Null whitespaces am Anfang des Strings, und die werden natürlich immer gefunden - die Regex matcht also jeden String.


ja aber wenn er jeden String matchen würde wieso bricht er dann ab, das hieße doch das der Match den er findet eine True Aussage ist und somit dürfte er doch nicht abbrechen
perlniete
 2009-02-09 00:54
#118716 #118716
User since
2009-02-08
10 Artikel
BenutzerIn
[default_avatar]
Ich bin für eure Hilfe echt sehr sehr sehr dankbar... Jetz hätte ich noch ne Frage:

Ich hab mich mit etwas für mich schwierigerem beschäftigt....folgende Aufgabe, und ich hoffe ich muss euch danach nicht mehr belästigen.

while ( $sequence =~ /$regexp/ig ) {
push ( @positions, pos($sequence) - lenght($&) +1);
}

Diese Zeilen sollen die Restriktionsschnittstelle, die im reulären Ausdruck $regexp steht, in der Sequenz $sequence und vermerken die Position glaub ich dann im Array @positions.

dass das i dafür steht das der Groß- und Kleinschreibung irgnoriert hab ich mitlerweile rausbekommen, aber woher kommt die Positionsangabe und wie werden die dann im Array vermerkt?

Ich hoff ihr seit noch ned all zu genervt!
renee
 2009-02-09 09:17
#118729 #118729
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Bitte bei einem Thread bleiben.
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/
GwenDragon
 2009-02-09 10:08
#118731 #118731
User since
2005-01-17
14745 Artikel
Admin1
[Homepage]
user image
---
//Modedit Gwendragon: Titel geändert
---
pq
 2009-02-09 11:31
#118738 #118738
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
perlniete+2009-02-08 22:58:42--
1) $iub =~ s/\^//g;

$iub steht ja einfach nur für einen String. s für ersetzen. Aber dann kommen meine Probleme. Das ^ steht ja für den zeilenanfang. Heißt das jetz der soll in dem String den Zeilenanfang durch nichts ersetzen?

der backslash escaped ein zeichen, so dass es keine sonderbedeutung mehr hat. das ist eigentlich so
eine standard-aufgabe für den backslash in der programmierung.
eigentlich ist der backslash auch recht früh in perldoc perlre erklärt (ich geh mal davon aus, dass du
perldoc kennst). also, die substitution ersetzt einfach nur global das '^'.

und bitte nicht mehr doppelt posten. einmal reicht.
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem
pq
 2009-02-09 11:32
#118739 #118739
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
perlniete+2009-02-08 22:58:42--
2)$line =~ /^\s*$/
wenn \s für Leerzeichen steht heißt das dann in dem String sollen vom Zeilenanfang bis zum Zeilenende beliebig viele Leerzeichen stehen?

nö, sie sollen nicht darin stehen, aber sie sollen gelöscht werden, *wenn* sie darinstehen. diese
substitution löscht also alle whitespaces (\s steht für eine sammlung von whitespaces, darunter nicht
nur das leerzeichen, sondern auch tabs, newlines etc.), falls keine anderen zeichen in dem string vorkommen.
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem
pq
 2009-02-09 11:32
#118740 #118740
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
perlniete+2009-02-08 22:58:42--

3) if ( $line =~ /^\s*/ ) {exit; } Diese Abfrage führt dazu dass das Programm auf Eingabe von <Return> abgebrochen wird, allerdings versteh ich nicht wieso, der sucht doch da auch nur nach Leerzeichen oder nicht?

diese abfrage matcht *immer*. da hast du sicher was falsch abgeschrieben.
warum matcht sie immer? sie matcht, wenn beliebig viele whitespaces am anfang eines strings stehen.
beliebig viele heisst auch null. und das trifft immer zu.
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem
pq
 2009-02-09 11:36
#118741 #118741
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
perlniete+2009-02-08 23:54:04--
aber woher kommt die Positionsangabe und wie werden die dann im Array vermerkt?

Ich hoff ihr seit noch ned all zu genervt!

nö, wenn du langsam mal anfängst, die doku zu lesen, bevor du fragst und ordentliche quote und code-tags verwendest. ist eine lösbare aufgabe, falls du jetzt keine ahnung hast, wovon ich rede, lies bitte die faq. die ist sogar immer in meiner signatur verlinkt.

so, zum problem: perldoc -f pos (in der kommandozeile eintippen)
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem
<< |< 1 2 >| >> 14 Einträge, 2 Seiten



View all threads created 2009-02-09 00:01.