Regex frage

K

konstimator

Gast
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.

Mein Ansatz is so:
^[+]?[0-9]+.{0-9}+$

is das so korrekt?
 
G

Gast2

Gast
Was fehlt dir denn deiner Meinung nach? Hast du es mal Unit getested - die Regex dürfte schon mal direkt eine Exception werfen...?
 
Zuletzt bearbeitet von einem Moderator:

konstimator

Mitglied
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
 
Zuletzt bearbeitet:
G

Gast2

Gast
Probier mal

Java:
	public static void main(String[] args) {
		Pattern p = Pattern.compile("^[+]?[0-9]+.{0-9}+$");
		Matcher m = p.matcher("0.123");
		System.out.println(m.matches());

	}

Das wird eine Exception werfen... Weil du da eine geschweifte Klammer hast die eine eckige sein sollte...

Damit kämen wir zu:
Java:
	public static void main(String[] args) {
		Pattern p = Pattern.compile("^[+]?[0-9]+.[0-9]+$");
		Matcher m = p.matcher("0.123");
		System.out.println(m.matches());

	}

Soweit so gut:

"0.123" => true
"+23.2445" => true
"-0.124" => false

Ist ja schon mal nicht schlecht - aber was passiert bei "123" oder "+123"?

Teste es doch mal. Dann wirst du festellen das in dem Teil "[0-9]+.[0-9]+" noch ein Fehler ist.
 
Zuletzt bearbeitet von einem Moderator:
G

Gast2

Gast
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"
 

LoR

Bekanntes Mitglied
Du musst den "." escapen (regscapen :D).

//EDIT
Erst warten

//Edit 2
Hehe
 
Zuletzt bearbeitet:
G

Gast2

Gast
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.
 
G

Gast2

Gast
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 :)
 

konstimator

Mitglied
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.

Hab noch weitere fragen, wenn ihr zeit habt.
 
G

Gast2

Gast
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.
 

konstimator

Mitglied
ich kann ja ma aufschreiben, was wir bis jetzt alles hatten:

.=beliebiges Zeichen
\.=Satzende
[1-4]=Menge z.B. 1,2,3,4
[a-z]=Alphabet
[^0-9]= Nagation, also keine Zahlen
-[0-9]= alle negativen Zahlen
^=Zeilenanfang
$=Zeilenende
+=ein-oder mehrmaliges Auftreten
?=null-oder einmaliges Auftreten
*=null-,ein-oder mehrmaliges Auftreten
{}=bestimmte Anzahl z.B. an NAchkommastellen
|=oder

Mehr hatten wir noch nicht, deswegen weiß ich nich was mit Gruppierung und d usw. gemeint is
 

XHelp

Top Contributor
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
 

konstimator

Mitglied
find ich auch, aber sie will das so haben^^

kann ich hier ne nächste frage reinwerfen?

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
 
G

Gast2

Gast
Alternativen setzen: z.B. für das + oder - => [c]([+]|[-])?[/c], das Punkt oder Komma krichst du jetzt selber hin, gell?
 

konstimator

Mitglied
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]+?
 
G

Gast2

Gast
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]+?

Das ist schon mal komplett falsch. Räts du nur oder versuchst du ernsthaft etwas von dem mitzunehmen was wir hier schreiben?

Erklär doch mal was deine einzelnen Elemente da tun sollen?

Also

1) Regulärer Ausdruck ? Wikipedia lesen
2) Dein Lösung überdenken
3) Nochmal fragen was dir unklar ist
 

konstimator

Mitglied
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?
 

konstimator

Mitglied
Das ist schon mal komplett falsch. Räts du nur oder versuchst du ernsthaft etwas von dem mitzunehmen was wir hier schreiben?

Erklär doch mal was deine einzelnen Elemente da tun sollen?

Also

1) Regulärer Ausdruck ? Wikipedia lesen
2) Dein Lösung überdenken
3) Nochmal fragen was dir unklar ist

ich versuche es natürlich ernsthaft, hab eben erst das mit dem | gelesen also sieht die lösung wie folgt aus:^[-|+]?[0-9]+

oder etwa nicht?
 
Zuletzt bearbeitet:
G

Gast2

Gast
Geht in die richtige Richtung. Jetzt musst du noch überlegen - ist "+002347" eine gültige Zahl? Sind die führenden Nullen erwüscht/erlaubt?
 

konstimator

Mitglied
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
 
Zuletzt bearbeitet:
G

Gast2

Gast
Ist relativ einfach => [c]^[+|-]?[1-9]\\d*$[/c]

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
 

konstimator

Mitglied
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?
 
Zuletzt bearbeitet:
G

Gast2

Gast
\\d* ist in Java und einigen anderen Sprachen das gleiche wie [0-9]*

1000 würde gehn. Die 1 durch die erste Gruppe [1-9] und die drei Nullen durch \\d* bzw [0-9]*

Der gleiche Ausdruck wäre [c]^[+|-]?[1-9][0-9]*$[/c].
 

XHelp

Top Contributor
Womit testest du dein RegEx?
Vermutlich ist das Problem, dass du versuchst
Code:
\\d
irgendwo reinkopieren, wo man den Slash nicht escapen muss. Es heißt eigentlich
Code:
\d
 

konstimator

Mitglied
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.
 

konstimator

Mitglied
wie2 ? was meinst du damit, jedenfalls hab ich doch noch nen fehler entdeckt, da nun nicht mehr die zahlen wie z.B. 0,1 0,2 usw gehn
 
Zuletzt bearbeitet:

XHelp

Top Contributor
Naja, versuche ob auch einstellige Zahlen erkennt werden, wie
Code:
1
,
Code:
2
,
Code:
3
etc.
 

konstimator

Mitglied
Naja, versuche ob auch einstellige Zahlen erkennt werden, wie
Code:
1
,
Code:
2
,
Code:
3
etc.

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
 

LoR

Bekanntes Mitglied
Ok beenden wir das Spielchen :):

Java:
Pattern p = Pattern.compile("^[+]?(?![.,])[0-9]*[.,]?[0-9]+$");

Das sollte passen ;).

//EDIT
Habs eben erst gelesen, aber wenn auch "+.457" bzw. sowas ".122" funktionieren sollen dann ist die nachfolgende Lösung möglich:

Java:
Pattern p = Pattern.compile("^[+]?[0-9]*[.,]?[0-9]+$");
 
Zuletzt bearbeitet:

konstimator

Mitglied
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?

is damit zum Beispiel eine IP-Adresse gemient?
 

konstimator

Mitglied
also ich hab folgenden ansaz:

[+|-]?[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.
 

XHelp

Top Contributor
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
 

konstimator

Mitglied
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:
 
Zuletzt bearbeitet:
Ähnliche Java Themen
  Titel Forum Antworten Datum
sserio Split() -> Regex Frage. Java Basics - Anfänger-Themen 7
I String.split regex Frage Java Basics - Anfänger-Themen 2
D regex Aufbau Frage Java Basics - Anfänger-Themen 4
H Konkrete Regex Frage Java Basics - Anfänger-Themen 8
X regex frage (durchsuchen) Java Basics - Anfänger-Themen 2
S Regex Frage Java Basics - Anfänger-Themen 4
E Regex Frage Java Basics - Anfänger-Themen 2
Daniel_L RegEx-Frage, Groß-/Kleinschreibung Java Basics - Anfänger-Themen 2
G Frage zu replaceAll und regex Java Basics - Anfänger-Themen 3
G regex frage Java Basics - Anfänger-Themen 6
D Regex greift nicht richtig Java Basics - Anfänger-Themen 4
B Regex Order unwichtig bei Lookaheads? Java Basics - Anfänger-Themen 7
F RegEx Hilfe Java Basics - Anfänger-Themen 5
R RegEx funktioniert nicht Java Basics - Anfänger-Themen 14
B Regex Ausdrücke für Monate Java Basics - Anfänger-Themen 7
W RegEx Java Basics - Anfänger-Themen 4
K REGEX - Rechnungsbetrag wird nicht richtig ausgelesen. Java Basics - Anfänger-Themen 3
X Wie kann man ein Regex erstellen, die 8-Bit-Binär-Zahlen darstellen. Java Basics - Anfänger-Themen 1
A Zusammengesetzte Nomen/Straßennamen mit Regex-Ausdrücken trennen Java Basics - Anfänger-Themen 8
Fodoboo131 RegEx- Umwandlung von String in ausführbares Objekt/ Befehl Java Basics - Anfänger-Themen 9
H Java Regex Aufzählung kontrollieren Java Basics - Anfänger-Themen 3
Nooobi Regex und .matches() geben keine Ausnahme Java Basics - Anfänger-Themen 10
K Wie verneine ich einen Regex? Java Basics - Anfänger-Themen 2
L Hilfe bei RegEx Java Basics - Anfänger-Themen 4
Dimax RegEx Java Basics - Anfänger-Themen 10
P Einfacher regulärer Ausdruck (RegEx) für E-Mail-Adressen Java Basics - Anfänger-Themen 2
O Regex bei ReplaceAll ersetzt Wort und Sonderzeichen nicht. Java Basics - Anfänger-Themen 9
O Text mit Regex trennen und wieder zusammenbauen Java Basics - Anfänger-Themen 5
L Regex issue Java Basics - Anfänger-Themen 4
B Regex Kombination benötigt Java Basics - Anfänger-Themen 5
strohkolben Regex Java Basics - Anfänger-Themen 3
OnDemand Regex oder Split? Java Basics - Anfänger-Themen 5
C RegEx Problem Java Basics - Anfänger-Themen 4
Dimax RegEx funktionieren nicht Java Basics - Anfänger-Themen 7
M Regex nur Zahlen und Punkt zulassen, Keine Eingabe(Leeres TextFeld) nicht zulassen Java Basics - Anfänger-Themen 6
K substitute mit regex Java Basics - Anfänger-Themen 10
G RegEx Java Basics - Anfänger-Themen 11
M Regex Erstellung Problem Java Basics - Anfänger-Themen 2
M Regex Probleme (mal wieder) Java Basics - Anfänger-Themen 3
M Regex zum Integer.parseInt Java Basics - Anfänger-Themen 4
G Regex Java Basics - Anfänger-Themen 4
M Regex-Ausdruck: Alle Zeichen bis auf ein bestimmtes erlauben (p{L}) Java Basics - Anfänger-Themen 5
M Regex anpassen Java Basics - Anfänger-Themen 19
C Regex-Problem Java Basics - Anfänger-Themen 4
M Regex für bestimmte Wörter bzw. bestimmte Zeichen erstellen Java Basics - Anfänger-Themen 5
C Positive und negative Zahlen mit Regex extrahieren Java Basics - Anfänger-Themen 8
F RegEx für Email Java Basics - Anfänger-Themen 2
F RegEx "+" nur als Zeichen, nicht als Operator oder Sonstiges Java Basics - Anfänger-Themen 2
FelixN RegEx aus einem String als String-Array zurückgeben Java Basics - Anfänger-Themen 8
FelixN RegEx Erläuterung "ˆ[ˆa-zA-Z]+$" Java Basics - Anfänger-Themen 6
F Regex Hilfe Java Basics - Anfänger-Themen 3
I Regex findet keine Treffer Java Basics - Anfänger-Themen 4
C Regex Java Basics - Anfänger-Themen 2
C Probleme bei Regex Java Basics - Anfänger-Themen 9
B Regex ignorieren von Groß - Kleinschreibung Java Basics - Anfänger-Themen 1
F Regex für Inlineformatierungen Java Basics - Anfänger-Themen 12
W Einfachen, ein beliebiges Zeichen oft erkennenden Regex Parser selber schreiben - wie vorgehen? Java Basics - Anfänger-Themen 12
O Regex Java Basics - Anfänger-Themen 2
F Switch Case Problem mit Regex lösen? Java Basics - Anfänger-Themen 6
H regex-Problem Java Basics - Anfänger-Themen 2
F Ist das ein korrekter Regex-Ausdruck? Java Basics - Anfänger-Themen 12
M Zahlenbereich mit RegEx Java Basics - Anfänger-Themen 3
B Hilfe bei Regex - Erstellung Java Basics - Anfänger-Themen 5
W RegEx Matcher + Pattern und Emails Java Basics - Anfänger-Themen 8
R Rechenzeichen als regex Java Basics - Anfänger-Themen 10
S Ich verstehe die RegEx Tabelle von Javadoc nicht so ganz Java Basics - Anfänger-Themen 3
C Erste Schritte Regex - Datei einlesen und splitten Java Basics - Anfänger-Themen 4
F RegEx Problem Java Basics - Anfänger-Themen 8
F Regex Hilfe Java Basics - Anfänger-Themen 14
G String nach Contains/Regex Java Basics - Anfänger-Themen 2
U RegEx alle Kommas bei den Zahlen in Punkt umwandeln Java Basics - Anfänger-Themen 3
K RegEx - Multiple Line Java Basics - Anfänger-Themen 3
S Regex Pattern Java Basics - Anfänger-Themen 3
K Regex: illegal character range Java Basics - Anfänger-Themen 4
F RegEX Hilfe Java Basics - Anfänger-Themen 8
U Regex für kommaseparierte Zahlen Java Basics - Anfänger-Themen 1
K Operatoren Regex für 10er Zahlen Java Basics - Anfänger-Themen 8
V Java Regex richtig parsen Java Basics - Anfänger-Themen 2
E Brauche eine Antwort zum Thema RegEx ( Alternative zur Lösung auch gesucht ) Java Basics - Anfänger-Themen 5
N mein RegEx Java Basics - Anfänger-Themen 2
C Lösung für RegEx in Java gesucht Java Basics - Anfänger-Themen 2
B Java - Reguläre Ausdrücke - RegEx oder Regular Expressions - Eckige Klammern Java Basics - Anfänger-Themen 2
M Regex/matcher Java Basics - Anfänger-Themen 2
T Methoden String.matches() - Regex Java Basics - Anfänger-Themen 2
truesoul Regex für www Java Basics - Anfänger-Themen 0
N Methoden Straßennamen und Hausnummer - RegEx Java Basics - Anfänger-Themen 19
W Erste Schritte Regex negieren Java Basics - Anfänger-Themen 3
W String match mit Wildcard ODER Regex Java Basics - Anfänger-Themen 1
E useDelimiter-Anwednung / Regex Java Basics - Anfänger-Themen 2
C java regex Java Basics - Anfänger-Themen 2
C Regex zum matchen ausserhalb von Tags Java Basics - Anfänger-Themen 3
O Regex zwischenspeichern Java Basics - Anfänger-Themen 6
O Regex Java Basics - Anfänger-Themen 5
R Einfacher Regex Java Basics - Anfänger-Themen 3
V RegEx Java Basics - Anfänger-Themen 15
HoloYoitsu Datentypen replaceAll() mit regex? Java Basics - Anfänger-Themen 5
G regex Verständnis Problem Java Basics - Anfänger-Themen 3
G verwendung von regex Java Basics - Anfänger-Themen 3
X Regex splitten Java Basics - Anfänger-Themen 5
T Regex Problem Java Basics - Anfänger-Themen 4

Ähnliche Java Themen

Neue Themen


Oben