Reguläre Ausdrücke

Status
Nicht offen für weitere Antworten.

Eminent

Bekanntes Mitglied
Hi,

ich hab mal wieder ne Frage! :roll:

Also ich habe verschiedene Strings und möchte diese jetzt auf Inhalt prüfen bzw. schauen ob nur Zahlen oder nur Buchstaben im String sind.

Ist an und für sich kein Problem, wenn ich den String Char für Char durchspringe und immer

Code:
char.isLetter();
char.isDigit();

benutze. Alternativ könnte ich mir ja auch immer einen Buchstaben als String nehmen und dann fragen

Code:
string.matches("[a-zA-Z]");
string.matches("[0-9]");

Aber für beide Lösungen müsste ich immer auf jeden einzelnen Buchstaben prüfen (OK bei nur Zahlen gings auch anderes :bae: ).

Gibts mit Hilfe der Regulären Ausdrücke nicht ne Möglichkeit wie ich einen kompletten String prüfen kann. Mit einzelnen Buchstaben z. B.

Code:
String s = "aaaaaa";
s.matches("a*");

geht das ganze ja. Nur ich find keine Möglichkeit das ganze so zu machen, dass er mir einfach sagt ob ein String nur Buchstaben enthält.

Geht das überhaupt? Oder muss ich einfach jeden Buchstaben / jede Zahl einzelnen prüfen?

Danke für eure Hilfe.

Gruß
Eminent
 
hi, also du willst schauen, ob in einem string nur buchstaben sind? na dann sollte doch deine lösung gehen?

Code:
if(s.matches("[a-zA-Z]*")){
    //nur buchstaben
}else{
    //nicht nur buchstaben
}

oder was ist jetzt das problem?

gruß
 
Mörketid hat gesagt.:
hi, also du willst schauen, ob in einem string nur buchstaben sind? na dann sollte doch deine lösung gehen?

Code:
if(s.matches("[a-zA-Z]*")){
    //nur buchstaben
}else{
    //nicht nur buchstaben
}

oder was ist jetzt das problem?

gruß

DANKE, wenn dus jetz nich gesagt hättest, dann hätte mich die EINFACHE Lösung wahrscheinlich noch geschlagen!!! Bin zwar auf die Idee mit a* gekommen, dass ich das ganze ja aber auch auf ne [a-z]* machen kann, auf die Idee bin ich natürlich mal wieder nich gekommen!!!

DANKE NOCHMAL
 
Hi,

meinem Verständnis nach hat diese Lösung einen kleinen Schöheitsfehler.
Nämlich der, dass ein String "" auch als "buchstaben erkannt wird. Ich würde sagen, man müsste hier "[a-zA-Z]+" schreiben. Damit mindestens ein Buchstabe vorkommen muss. Weiterhin würde ich sagen, dass der Anfang und das End "^[a-zA-Z]+$" entsprechend abgesichert werden müssten?

MfG
Karl Heinz
 
Ich seh schon, ich muss mich mal etwas genauer mit regulären Ausdrücken beschäftigen.

Bis jetzt habe ich die noch nie so richtig verwendet.

Danke euch allen nochmal für die Hilfe hat mir wirklich sehr geholfen!!!

[schild=4 fontcolor=000000 shadowcolor=C0C0C0 shieldshadow=1]DANKE[/schild]

Gruß
Eminent
 
kama hat gesagt.:
Weiterhin würde ich sagen, dass der Anfang und das End "^[a-zA-Z]+$" entsprechend abgesichert werden müssten?

wozu? wenn der string nur buchstaben enthält, dann beginnt und endet er zwangsweise auch mit einem. :meld:
 
norman hat gesagt.:
kama hat gesagt.:
Weiterhin würde ich sagen, dass der Anfang und das End "^[a-zA-Z]+$" entsprechend abgesichert werden müssten?

wozu? wenn der string nur buchstaben enthält, dann beginnt und endet er zwangsweise auch mit einem. :meld:

Ich habe mich zwar noch nie mit Java-RegExps beschäftigt, aber der Ausdruck
"[a-zA-Z]+" matcht doch normalerweise das erste Auftreten, oder nicht?

Also bei " ,.-_:;äöüßg123456789" findet er das "g", was ja nicht sein soll, wenn der
gesamte String nur aus (lateinischen) Buchstaben bestehen soll.
 
Achso, also anders als die gewohnten Unix-tools.

Dann braucht man natürlich keine zusätzlichen Anfangs/Ende Begrenzer.
 
Hi,

nachdem ich hier etwas ähnliches schon mal gefragt hab nehme ich mal meinen alten Theard um nicht nen neuen aufmachen zu müssen.

Diesmal ist es nur n bisschen anderen und zwar wird mir eine id übergeben und je nachdem aus welchen beiden Buchstaben die ID besteht muss ich entweder einen Zwischenschritt machen oder nicht.

Mit großen if ... else if ... else if ... oder auch if (... || ... || ... ||...) geht das ganze ja schon auch, nur fände ich es schöner, wenn ich das ganze mit einem einfachen String#matches(regex) abdecken könnte.

Kommen können alle möglichen verschiedenen ids und es nur genau dann etwas passieren, wenn es sich um eine der vier folgenden ids handelt:

bv
ss
xx
tm

Ich hatte jetzt folgendes versucht:

String#matches("[bsxt][vsxm]")

Das funktioniert auch bei den vier genannten ids ohne Problem, Problem ist nur, dass es auch ids gibt, die hier soz. mit durch rutschen (z. B. sm). Gibt es da eine einfache Möglichkeit das ganze in einem einzigen regex abzubilden, oder muss ich hier einfach damit leben, dass ich mehrere Abfragen dafür brauche?

Danke euch schon mal für die Hilfe!!!

Gruß
Eminent
 
Hi,

nachdem ich hier etwas ähnliches schon mal gefragt hab nehme ich mal meinen alten Theard um nicht nen neuen aufmachen zu müssen.

Diesmal ist es nur n bisschen anderen und zwar wird mir eine id übergeben und je nachdem aus welchen beiden Buchstaben die ID besteht muss ich entweder einen Zwischenschritt machen oder nicht.

Mit großen if ... else if ... else if ... oder auch if (... || ... || ... ||...) geht das ganze ja schon auch, nur fände ich es schöner, wenn ich das ganze mit einem einfachen String#matches(regex) abdecken könnte.

Kommen können alle möglichen verschiedenen ids und es nur genau dann etwas passieren, wenn es sich um eine der vier folgenden ids handelt:

bv
ss
xx
tm

Ich hatte jetzt folgendes versucht:

String#matches("[bsxt][vsxm]")

Das funktioniert auch bei den vier genannten ids ohne Problem, Problem ist nur, dass es auch ids gibt, die hier soz. mit durch rutschen (z. B. sm). Gibt es da eine einfache Möglichkeit das ganze in einem einzigen regex abzubilden, oder muss ich hier einfach damit leben, dass ich mehrere Abfragen dafür brauche?

Danke euch schon mal für die Hilfe!!!

Gruß
Eminent
 
Tobias hat gesagt.:
String.matches("[bv]|[ss]|[xx]|[tm]"); ?

So weit ich reguläre ausdrücke bis jetz verstanden habe würde deine Abfrage prüfen ob es sich um einen String handelt, der aus 4 Buchstaben besteht, wobei der erste Buchstabe im String ein b oder ein v sein müsste, der zweite Buchstabe ein s, usw.
 
Wenns nur 4 Fälle gibt, kann man doch auch noch eine Anweisung ala

Code:
if (String.compareTo("bv") || String.compareTo("xx") || String.compareTo("ss") || String.compareTo("tm"))
      doSomething();

verantworten, oder? Ich finde das nicht so schlimm, ausserdem ist es bestimmt schneller 😉 Ich weiss du hattest geschrieben, dass du das lieber als regex formuliert hättest, aber ich denke das ist einfach kein guter Anwendungsfall für regüläre Ausdrücke.
 
LoN_Nemesis hat gesagt.:
Wenns nur 4 Fälle gibt, kann man doch auch noch eine Anweisung ala

Code:
if (String.compareTo("bv") || String.compareTo("xx") || String.compareTo("ss") || String.compareTo("tm"))
      doSomething();

verantworten, oder? Ich finde das nicht so schlimm, ausserdem ist es bestimmt schneller 😉 Ich weiss du hattest geschrieben, dass du das lieber als regex formuliert hättest, aber ich denke das ist einfach kein guter Anwendungsfall für regüläre Ausdrücke.

Stimmt schon, die vier Vergleiche werden mich auch nicht umbringen! :lol: Ich werd das ganze dann auch so machen denke ich, dacht nur vielleicht kann man da ja n bisschen mit so nem Regex rum spielen! 😀

Wie dem auch sein, danke für die Hilfe!!

Gruß
Eminent
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Zurück
Oben