RegExp für einzelnes Wort

Dieses Thema im Forum "Shell-Skripte" wurde erstellt von Giglio, 30.08.2007.

  1. Giglio

    Giglio Doppel-As

    Dabei seit:
    21.12.2006
    Beiträge:
    140
    Zustimmungen:
    0
    Hi,

    weiß jemand welcher Reguläre Ausdruck genau das erste (n-te) Wort einer Zeile meint?

    Mfg

    Sebi
     
  2. Anzeige

    Schau dir mal diese Kategorie an. Dort findest du bestimmt etwas.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  3. smg

    smg Regex Fetischist

    Dabei seit:
    20.05.2007
    Beiträge:
    195
    Zustimmungen:
    0
    Ort:
    /home/stephan/
    Kommt drauf an wie man "Wort" definiert - definiere es mir, dann erstelle ich dir einen Regex.
     
  4. Giglio

    Giglio Doppel-As

    Dabei seit:
    21.12.2006
    Beiträge:
    140
    Zustimmungen:
    0
    Hi,

    naja ein Wort also eine Folge von Buchstaben die dann durch ein Leerzeichen beendet wird.
    z.B.

    Herr Müller

    Jetzt möchte ich entweder auf Herr oder Müller zugreifen. Also mit \(...\). Blos was halt in die Klammer kommt :)

    Mfg

    Sebi
     
  5. #4 angelsfall, 30.08.2007
    angelsfall

    angelsfall Routinier

    Dabei seit:
    09.05.2005
    Beiträge:
    315
    Zustimmungen:
    0
    Ort:
    Berlin
    Hallo,

    ich kann mir grade nicht genau vorstellen, wie das im Zusammenhang aussehen soll. Gib mal ein konkreteres Beispiel.

    Aber ich vermute fast, dass das, was du machen möchtest, so nicht geht, da regexe auf ein Pattern matchen. Man kann also nur mit Mustern arbeiten, für was anderes, z.B. Grammatik, ist eine regex nicht zu gebrauchen. Aber vielleicht macht ein Beispiel das deutlicher :)
     
  6. #5 smg, 31.08.2007
    Zuletzt bearbeitet: 31.08.2007
    smg

    smg Regex Fetischist

    Dabei seit:
    20.05.2007
    Beiträge:
    195
    Zustimmungen:
    0
    Ort:
    /home/stephan/
    Also Wörter sind bei dir durch Whitespace getrennt? Oder nur durch ein Space Zeichen? Gehen Tabs auch?
    Welche Sprache verwendest du? Bzw. welches Tool wird gebraucht? Sed,awk,grep?
    Beantworte diese Fragen bitte!

    Ich nehme für eine erste Lösung Perl an und alle Sorten von Whitespace.

     
  7. Giglio

    Giglio Doppel-As

    Dabei seit:
    21.12.2006
    Beiträge:
    140
    Zustimmungen:
    0
    Hi,

    danke schon mal für den Lösungsansatz in Perl.
    Ich hätte den Ausdruck für sed gebraucht, heißt einen regulären Ausdruck.
    Die Wörter sind durch Leerzeichen voneinander getrennt.

    Mfg

    Sebi
     
  8. #7 Fallout, 31.08.2007
    Fallout

    Fallout Doppel-As

    Dabei seit:
    02.03.2007
    Beiträge:
    120
    Zustimmungen:
    0
    Hi,

    Als Wort könnte man z. B. alle Wortzeichen (\w welches [a-zA-Z0-9]* entspricht) zwischen den Leerzeichen definieren.
    Wenn es Dir aber nur um absolute Wortpositionen statt Suchmustern geht, nimmst Du vielleicht einfacher awk:

    Code:
    awk 'NR==3{print $2}' input_file
    Gibt das zweite Wort der dritten Zeile aus (Standard-Feldtrenner sind Leerzeichen bzw. Tabs - mit dem Schalter '-F' änderbar)

    Gruß Daniel
     
  9. #8 h2owasser, 31.08.2007
    h2owasser

    h2owasser Sxe Power User

    Dabei seit:
    07.12.2002
    Beiträge:
    491
    Zustimmungen:
    0
    in python :
    re.search("(\w+)",zeile).group(1)
     
  10. #9 Wolfgang, 31.08.2007
    Wolfgang

    Wolfgang Foren Gott

    Dabei seit:
    24.04.2005
    Beiträge:
    3.978
    Zustimmungen:
    0
    Ort:
    Erfurt
    Hallo
    Für sed einigermaßen Posix-konform dürfte das hier funktionieren:
    Code:
    $ echo "Das ist ein Test"|sed -e 's/^[[:space:]]*\([^[:space:]]*\)[[:space:]].*$/\1/'
    Das
    $ echo -e " Das\tist ein Test mit führenden Leerzeichen und gemischten Tabulatoren"|sed -e 's/^[[:space:]]*\([^[:space:]]*\)[[:space:]]*.*$/\1/'  
    
    $ echo "   Das      ist ein Test mit mehreren Leerzeichen"|sed -e 's/^[[:space:]]*\([^[:space:]]*\)[[:space:]]*.*$/\1/'
    Das
    
    
    Du solltest dir im Klaren sein, dass Regexp nicht gleich Regexp ist.
    Perl bietet noch die komfortabelste und portierbarste Lösung an.
    Dann gibt es eRegexp (erweiterte) und basis Regexp in der Shell...
    Also ist es schon vom verwendeten Tool abhängig.

    Gruß Wolfgang
     
  11. smg

    smg Regex Fetischist

    Dabei seit:
    20.05.2007
    Beiträge:
    195
    Zustimmungen:
    0
    Ort:
    /home/stephan/
    Ah, du kannst auch einfach cut benutzen.
    also cut -d ' ' -f ZAHL
     
  12. Anzeige

    Vielleicht findest du HIER Antworten.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  13. #11 Wolfgang, 01.09.2007
    Wolfgang

    Wolfgang Foren Gott

    Dabei seit:
    24.04.2005
    Beiträge:
    3.978
    Zustimmungen:
    0
    Ort:
    Erfurt
    cut funktioniert nur, wenn es keine oder eine feste Anzahl von Leerzeichen am Beginn gibt. Deshalb ist wohl sed, awk oder Perl flexibler und zuverlässiger.

    Code:
    $ echo "   mit mehreren Leerzeichen am Beginn"|cut -d' ' -f1
    
    wolle@Nietzsche:/tmp
    $ echo "   mit mehreren Leerzeichen am Beginn"|sed -e 's/^[[:space:]]*\([^[:space:]]*\)[[:space:]].*$/\1/'
    mit
    
    
    Hängt also vom zu erwarteten Text ab.


    Gruß Wolfgang
     
  14. smg

    smg Regex Fetischist

    Dabei seit:
    20.05.2007
    Beiträge:
    195
    Zustimmungen:
    0
    Ort:
    /home/stephan/
    Schon, aber OP hat oben gezeigt wie das Format ist, also keine Leerzeichen offensichtlich am Anfang der Zeile.
     
Thema:

RegExp für einzelnes Wort

Die Seite wird geladen...

RegExp für einzelnes Wort - Ähnliche Themen

  1. regexp für alle user einer bestimmten Maildomain

    regexp für alle user einer bestimmten Maildomain: Hallo, ich brauche den regulären Ausdruck, der mir erlaubt alle Mailadressen von firma.de zu filtern. Ich habe es schon mit folgenden...
  2. RegExp für "Wort|NN"

    RegExp für "Wort|NN": Hallo zusammen, ich habe eine Textdatei mit einigen tausend Zeilen, die in etwa so aussehen: ---------- Absenkung|NN -0.3434 Absenkungen...
  3. Blockade bei regexp - wie Exact-Match definieren?

    Blockade bei regexp - wie Exact-Match definieren?: Hallo Leute, komme gerade nicht weiter, dabei ist es eig. was banales. Wollte mit grep nach nem definierten Wert suchen und aufgrund der hohen...
  4. regexp

    regexp: lo zusammen, mein 100. post in den letzten paar tagen aber komme schon wieder nicht weiter... ich möchte in meinem script prüfen lassen, ob eine...
  5. regexp zum Zaehlen von Buchstaben

    regexp zum Zaehlen von Buchstaben: Hallo, ich wuesste gerne den regulaeren Ausdruck (fuer grep o.ae.), um Zeilen aus einer Textdatei auszuwaehlen, die einen bestimmten Buchstaben...