huhu, also ich hab informatik in der 12 Klasse und soll folgende aufgabe lösen:
ich soll einen regulären ausdruck erstellen, der NUR die positiven Dezimalzahlen ausgibt. Als Trennzeichen soll der Punkt dienen.
nein, ich hab auch kein programm dazu es erscheint mir nur falsch. Wir ham damit erst letzten donnersatg angefangen und ich bin dementsprechend unsicher.
ich dachte es könnte auch z.B. so aussehnen: ^[+]?[0-9]*([0-9]{0-9})?$, so in etwa stands in nem andren Forum
Und wo ist da dein Dezimalpunkt? Nicht nur in Foren nach Lösungen suchen - sondern versuche zu verstehn was die Regex macht. Es gibt i.d.R. da auch nie EINE Lösung - sondern meist relativ viele verschieden elegante Regex Ausdrücke für das gleiche "Problem"
Ich bin mal so nett: [c]"^[+]?[0-9]*[\\.]?[0-9]+$"[/c] würde schon mal einen Schritt weitergehen - aber z.B. [c]"+.123"[/c] wäre demnach auch richtig. Also jetzt noch ein bisschen Eigeninitiative entwickeln... Gruppierungen dürften dir weiterhelfen.
Ich bin mal so nett: [c]"^[+]?[0-9]*[\\.]?[0-9]+$"[/c] würde schon mal einen Schritt weitergehen - aber z.B. [c]"+.123"[/c] wäre demnach auch richtig. Also jetzt noch ein bisschen Eigeninitiative entwickeln... Gruppierungen dürften dir weiterhelfen.
Wie gesagt: Es gibt viele Möglichkeiten... elegante und nicht so elegante. Ich hab nur auf dem aufgebaut was der der Fragesteller schon vorgstellt hat - aber an für sich gebe ich dir recht
is ja schön und gut, aber ihr müsst euch vorstellen, dass ich info nur als nebenfach hab und von //d noch nie was gehört hab. es wäre sehr nett, wenn ihr mir einfach sagen könnt wie die lösung lautet, denn ich hab weder nen programm wo ich schaun kann obs auch funktioniert noch ahnung von was ihr da redet. ich hab 2 schulstunden diese regex und deswegen noch nich sehr viel ahnung. Vll könnt ihr mir da dann ja ma helfen und mir auch son programm empfehlen wo man das kostenlos ausprobieren kann.
Das "Programm" um es auszuprobieren ist oben genannter Code. Alternativ lad dir Kodos - The Python Regex Debugger runter und probier es damit aus.
Also ein bisschen Eigeninitiative wirst du schon aufbringen müssen - die perfekte Lösung für Hausaufgaben werden hier selten abgegeben (aus verschiedenen uten Gründen).
Also - lad dir zumindest Kodos runter und probiere deine Lösungen aus - nachdem du versucht hast unsere bisheirgen Vorschläge zu verstehen.
Soll denn "+123" funktionieren?
Mit den was ihr hattet kommst du doch schon gut zurecht:
- entweder 1x oder 0x [+]
- entweder viele oder gar keine Zahlen
- Punkt
- entweder viele oder gar keine Zahlen
Wenn ja dann folgendes problem:
das selbe wieder mit dezimalt´zahlen, nur dass diesma auch noch negative zahlen gefunden werden können, sowie statt dem . nen , stehn kann. und es soll auch +.123 oder +,123 gefunden werden
jo ich schau ma. und dann sollte ich noch eine regex erstellen, in der Nur die negativen und positiven ganzen Zahlen ausgegeben werden. als lösung hab ich hier ^[+]?[0-9]+[-][0-9]+?
Soll denn "+123" funktionieren?
Mit den was ihr hattet kommst du doch schon gut zurecht:
- entweder 1x oder 0x [+]
- entweder viele oder gar keine Zahlen
- Punkt
- entweder viele oder gar keine Zahlen
jo ich schau ma. und dann sollte ich noch eine regex erstellen, in der Nur die negativen und positiven ganzen Zahlen ausgegeben werden. als lösung hab ich hier ^[+]?[0-9]+[-][0-9]+?
so hab jetzt als Lösung ^[+|-][0-9]*[\\.|\\,]?[0-9]+$
folgendes Problem: es sollen ja nur die dezimalzahlen ausgegeben werden. bei dieser Lösung und der davor funktionieren aber ja auch 123 und +123, also is die Aufgabe noch nicht richtig gelöst.
Und bei diesem kodos check ich gerade nich wie das gehn soll. ich geb oben das zeug ein und unten das was rauskommen soll. aber manchma is es unten dennoch rot und wenn ich dann auf das fragezeichen oben im menü gehe gehts dann doch. Is das so gewollt?
hmm das haben wir nicht deffiniert, sieht komsich aus, und ich hab auch keine ahnung wie das gehen soll wenn ich ehrlich bin, denke mma es muss mit ^ also negation gearbeitet werden
fassy, hast du irgendwie msn oder so, damit ich dich noch ma was fragen kann, das würd schneller gehn
Also
1) ^ = Start
2) [+|-]? = optional entweder ein + oder ein -
3) [1-9] = Eine Zahl zwischen 1 und 9
4) \d* = beliebig viele Zahlen ziwschen 0 und 9
5) $ = Ende
Jetzt überdenk nochmal deine anderen Lösungen und schrieb dir mal alle auf
das mit dem \\d* versteh ich nicht so genau und in diesem kodos funktioniert diese regex auch nich. und wenn ich nur 1-9 nehm wir ja die zahl 0 nicht ausgegeben, was is dann mit 1000? also das wird noch weniger stimmen oder?
so habs jetzt verstanden echt genial das mit dem \d* auch wenn wirs noch nicht hatten^^.
zunächst einmal nen großen Dank für die vielen, schnellen Antworten, aber das Problem is immer noch, dass auch 123 ausgegeben wird und nicht NUR dezimalstellen.
nein werden sie jetzt nicht mehr und das is ja auch gut so^^ sollen ja nur noch dezimalstelllen funktionieren, aber jetzt is halt das problem, dass 0,1 0,2 usw nich mehr geht
versteht wer ws gemeint ist, wenn ich einen regex erstellen soll, der alle zeilen ausgibt, die zeichenketten enthalten, die mehr als ein Dezimaltrennzeichen (Punkt oder Komma) enthalten soll?
[+|-]?[1-9][0-9]+[\\,|.]+[0-9]+[\\.|,]+[0-9]+
dann kann man aber lediglich 2 ma nen komma setzen und nich mehr und ich denke man soll unbergrenz kommas, bzw. punkte setzen können.
Es wurde ja nur nach Punkt und Komma gefragt, also kannst du deinen Regex so aufbauen:
- belibige viele Zeichen, außer Zeilenumbruch
- . oder ,
- belibige viele Zeichen, außer Zeilenumbruch
- . oder ,
- belibige viele Zeichen, außer Zeilenumbruch
Hab ich das nicht so gemacht? Gibt es keine Funktion, dass ich nicht ständig weiter meine Zeilen deffinieren muss? Weil in meinem Beispiel kann ich ja nur 111,222,,33.44 z.B. schreiben und wenn ich dann noch ma nen , oder . setz gehts nich mehr weiter, wenn du verstehst was ich meine.:toll: