perlunity.de - PERL | JAVASCRIPT | PHP | MySQL | APACHE



#!/COMMUNITY

Members: 5374
davon online: 1
weitere User: 31
Click for quality!




10.02.2012 / 10:21

Community-Member werden   |   Paßwort vergessen   |   OnlineMonitor (1) Wer ist online ... OnlineMonitor starten !
     

 

Home


PERLscripts


PHPscripts


JAVAscripts


Hilfreiches


Links2www


Newscenter


Community


Interna




Community  »  Perl: Allgemeines Forum zur Themenübersicht Themensuche Themenansicht in Thread-Modus


Beitragparsing hilfe
Seitenanfang
hallo alle;
habe das folgende problem:
ich habe die folgende zeile:

Parse Rules
A typical Fasta title line is:

>gi|16764|emb|Z17609.1|Z17609 ATTS0183 Gif-SeedA+B Arabidopsis thaliana cDNA clone YAP043T 3'

The gi number is the most reliable identifier. Suitable parse rules are:

1-Accession from Fasta title: ">\(gi|[0-9]*\)"
2Description from Fasta title: ">[^ ]* \(.*\)"

die erste parseregel ">\(gi|[0-9]*\)" extrahiert man damit den " gi|[0-9]* " von oben
aber was bedeutet diese schräkstrich vor dem klammernn??? vor gi??? oben im Ausdruck sind doch keine klammern zusehen???
das ist genau so den fall im 2.
danke im voraus.

Datum: 28.06.2007-16:48

Beitragre: parsing hilfe
Seitenanfang
Der Schraegstrich (Backslash \ ) vor den Klammern besagt, das die Klammer im Regex Woertlich interpretiert werden und kein Teil der Regex sind.

Datum: 29.06.2007-07:00

Beitragre: parsing hilfe
Seitenanfang
Das Regexp-Beispiel von oben ist kein Perl-Regexp, es gibt mehrere unterschiedliche Formen von Regexps. Zum Beispiel wird anders als bei Perl's Regexp bei grep's Basic-Regexp die runden Klammern mit Backslashes versehen.

$ echo 'gi|16764|emb|Z17609.1|Z17609 ATTS0183' | grep -o '\(gi|[0-9]*\)'
gi|16764

Das heiszt der Regexp von grep '\(gi|[0-9]*\)' entspricht dem Regexp '(gi\|[0-9]*)' in Perl.

Die runden Klammern sind zum Speichern des Treffers, in diesen Fall wuerde 'gi|16764' in der Variablen $1 gespeichert, bzw. bei Rueckgabe im Listenkontext der erste Listeneintrag.

Datum: 29.06.2007-13:20

Beitragre: parsing hilfe
Seitenanfang
Hi dash,

das ist so nicht ganz richtig. Ich brauche keine Klammern, um mit einer Pipe ein logisches ODER zu schaffen. Wenn die Pipe zum Suchausdruck gehören soll, dann sollte ich sie in jedem Falle maskieren! Sonst kann es passieren, dass die RegEx-Engine hier radikal verodert.


$var =~ /ich|du/;

Findet: ich, aber auch du

Eine andere Variante, die den Code deutlich besser lesbar macht, sind erweiterte RegExp, bei der Klammern verwendet werden können, ohne das der geklammerte Ausdruck gespeichert wird.


$var =~ /^\d+\s(?:Platz|Rang)/;

Findet: Eine oder mehrere Zahlen am Anfang der Zeile, gefolgt von einem Whitespace und dem Wort Platz oder Rang. Das geht natürlich auch negiert.


$var =~ /^\d+\s(?!Position|Level)/;

-uw

Datum: 02.07.2007-23:30

Beitragre: parsing hilfe
Seitenanfang
Na! Da musst du aber nochmal meinen Beitrag lesen, es ging naemlich nicht um das Gruppieren, es ging um die Frage warum in den Regexp-Beispiel ein Backslash vor den runden Klammern steht obwohl im zumatchenden Text keine runden Klammern vorkommen. Das ist der Fall weil hier nicht Perl's Regexp als Beispiel verwendet wurden, sondern vermutlich die von grep und da sind die runden Klammern zu escapen damit sie ihre besondere Bedeutung bekommen.

:-)

Datum: 03.07.2007-12:27

Beitragre: parsing hilfe
Seitenanfang
danke alle für die schnelle Hilfe:))

Datum: 29.06.2007-14:24

-






-
-