1. Weiterleitung zu NetzLiving.de
  2. Forum
    1. Unerledigte Themen
  3. zum neuen Forum
  • Anmelden
  • Suche
Dieses Thema
  • Alles
  • Dieses Thema
  • Dieses Forum
  • Seiten
  • Forum
  • Erweiterte Suche
  1. Informatik Forum
  2. Webmaster & Internet
  3. Entwicklung

RegEx

    • Frage
  • bruzzler
  • 31. Juli 2006 um 10:20
  • Unerledigt
Hallo zusammen,

das Informatik-Forum geht in den Archivmodus, genaue Informationen kann man der entsprechenden Ankündigung entnehmen. Als Dankeschön für die Treue bekommt man von uns einen Gutscheincode (informatikforum30) womit man bei netzliving.de 30% auf das erste Jahr sparen kann. (Genaue Infos sind ebenfalls in der Ankündigung)

Vielen Dank für die Treue und das Verständnis!
  • bruzzler
    Punkte
    586
    Beiträge
    92
    • 31. Juli 2006 um 10:20
    • #1

    Ich war noch nie gut in solchen sachen...vielleicht kann mir aber einer von euch helfen:

    Ich such in einem Text eine Kommazahl mit beliebig vielen Vorkomma und Nachkommastellen - wie lautet dazu der richtige Regular Expression Ausdruck?

    bsp:

    asdöfakjdflöajdföaj1.23478234234öaksjdföajsdföalsjdfö

    Ergebniss nach der suche sollte dann sein: 1.23478234234


    danke ;)

  • segfault
    Punkte
    583
    Beiträge
    113
    • 31. Juli 2006 um 10:50
    • #2

    [0-9].*[0-9]

    sollte funktionieren...

    file:
    asdöfakjdflöajdföaj1.23478234234öaksjdföajsdföalsjdfö

    grep -e [0-9].*[0-9] -o file

    1.23478234234

    lg
    segfault

  • Lacce
    Punkte
    50
    Beiträge
    10
    • 31. Juli 2006 um 11:11
    • #3

    [0-9].*[0-9] ist nicht so geschickt - der Punkt ist bedeutet nämlich "matche jedes Zeichen". Dass die Expression hier funktioniert ist eigentlich nur Zufall - sie matcht alles, was mit einer Ziffer anfängt und mit einer Ziffer aufhört. Also auch z.B. "1huhu2".

    Ich denke, "[0-9]*\.[0-9]*" ist hier besser. Also zum aufrufen:

    Code
    grep -oe '[0-9]*\.[0-9]*' file

    -Thomas

  • segfault
    Punkte
    583
    Beiträge
    113
    • 31. Juli 2006 um 11:33
    • #4
    Zitat von Lacce

    [0-9].*[0-9] ist nicht so geschickt - der Punkt ist bedeutet nämlich "matche jedes Zeichen". Dass die Expression hier funktioniert ist eigentlich nur Zufall - sie matcht alles, was mit einer Ziffer anfängt und mit einer Ziffer aufhört. Also auch z.B. "1huhu2".

    Ich denke, "[0-9]*\.[0-9]*" ist hier besser. Also zum aufrufen:

    Code
    grep -oe '[0-9]*\.[0-9]*' file

    -Thomas

    stimmt natuerlich ;) sorry, war eher schnell "hingefetzt" ohne viel drueber nachzudenken (erst denken dann posten :) )

  • MaxAuthority
    Punkte
    3.165
    Beiträge
    626
    • 31. Juli 2006 um 12:13
    • #5
    Zitat von Lacce


    Ich denke, "[0-9]*\.[0-9]*" ist hier besser.

    Besser schon, aber kommt auf die genaue spezifikation an. Wenns wirklich beliebig viele sein koennen, stimmt die regexp schon, aber macht es sinn '.' als zahl zu matchen?

    Ich wuerd die (fuer praktische zwecke) so bauen:

    [0-9]+(\.[0-9]+)?

  • bruzzler
    Punkte
    586
    Beiträge
    92
    • 31. Juli 2006 um 12:19
    • #6
    Zitat von MaxAuthority

    Besser schon, aber kommt auf die genaue spezifikation an. Wenns wirklich beliebig viele sein koennen, stimmt die regexp schon, aber macht es sinn '.' als zahl zu matchen?

    Ich wuerd die (fuer praktische zwecke) so bauen:

    [0-9]+(\.[0-9]+)?


    aaaaahhhhh danke......hatte wohl einen knoten im hirn...vor lauter java.util.regexp.....klassen!!!

    danke!!

  • Maximilian Rupp 27. Dezember 2024 um 12:05

    Hat das Thema aus dem Forum Programmieren nach Entwicklung verschoben.

  1. Datenschutzerklärung
  2. Impressum