| Herzlich Willkommen! ( Einloggen | Registrieren ) | Nochmaliges Übersenden der Registrierungs-Mail |
![]() ![]() ![]() |
'Haudegen' |
Geschrieben: 08.02.2010 - 15:37
|
||
![]() ![]() ![]() ![]() Beiträge: 526 Mitglied seit: 22.09.2003 Benutzergruppe: Informatik (Master) Absolvent Keinen |
Hallo! Könnte jemand erklären, warum ich "false" in der Console bekomme? Der reguläre Ausdruck ist doch richtig. Oder täusche ich mich?
|
||
'for Pony' |
Geschrieben: 08.02.2010 - 15:45
|
||
![]() ![]() ![]() ![]() Beiträge: 419 Mitglied seit: 05.02.2008 Benutzergruppe: Administratoren 1. Semester Informatik (Master) |
Versuch mal
Ich bin spontan immer nicht so ganz mit der Bindungsreihenfolge Vertraut. Grüße Oli |
||
'Haudegen' |
Geschrieben: 08.02.2010 - 15:51
|
||
![]() ![]() ![]() ![]() Beiträge: 526 Mitglied seit: 22.09.2003 Benutzergruppe: Informatik (Master) Absolvent Keinen |
Danke für die Antwort. :) Deiner Code funktioniert, aber der Ausdruck von mir muss doch auch funktionieren. Bis jetzt habe ich keinen Fehler gefunden. Langsam werde ich skeptisch, was die java regexp angeht Der Beitrag wurde bearbeitet von Waldemar am 08.02.2010 - 15:51 |
||
'Haudegen' |
Geschrieben: 08.02.2010 - 15:56
|
||
![]() ![]() ![]() ![]() Beiträge: 526 Mitglied seit: 22.09.2003 Benutzergruppe: Informatik (Master) Absolvent Keinen |
Ich habe hier rumprobiert: Die Pattern a und c funktionieren, der c fällt durch, wobei b von c nur ein "c" unterscheidet
|
||
'mv * /dev/null' |
Geschrieben: 09.02.2010 - 19:33
|
||
![]() ![]() ![]() Beiträge: 71 Mitglied seit: 05.10.2007 Benutzergruppe: Informatik (Bachelor) 6. Semester Informatik (Bachelor) |
Vermutung: Pattern b: (b)?cc|x) wird interpretiert als (b)?c(c|x) Pattern c: (b)?c|x) wird interpretiert als (b)?(c|x) Deswegen geht das "x" bei c auch durch und bei b nicht. Bei a keine Ahnung, ich würde an deiner Stelle mehr Klammern, dann klappt es auch! Ich bin mir sicher, dass die Java Regex "ordnungsgemäß" funktionieren :smoke: |
||
'Haudegen' |
Geschrieben: 10.02.2010 - 10:00
|
||
![]() ![]() ![]() ![]() Beiträge: 526 Mitglied seit: 22.09.2003 Benutzergruppe: Informatik (Master) Absolvent Keinen |
Das wär dann nämlich falsche Interpretierung. Der Beitrag wurde bearbeitet von Waldemar am 10.02.2010 - 10:00 |
||
'mv * /dev/null' |
Geschrieben: 11.02.2010 - 17:05
|
||||||
![]() ![]() ![]() Beiträge: 71 Mitglied seit: 05.10.2007 Benutzergruppe: Informatik (Bachelor) 6. Semester Informatik (Bachelor) |
Meine Vermutung war falsch, hab nochmal getestet:
Das heißt entweder "(b)?cc" oder "x". Bei (...|...) wird also scheinbar alles, was links oder rechts vom "|" steht, zusammengefasst. Entsprechend sollte eigentlich das "x" auch bei
matchen (und ich verstehe auch nicht so ganz wieso es nicht so ist). Es hat auf jeden Fall was mit der Position des "?" zu tun, denn wenn man es in die Klammern hineinzieht, dann klappt es. Also
wird für "x" zu true. Online java regex testerWas lernen wir daraus? Lieber ein paar Klammern mehr und man vermeidet solche Effekte! :biggrin: Der Beitrag wurde bearbeitet von Stefan.M am 11.02.2010 - 17:58 |
||||||
'Doppel-As' |
Geschrieben: 13.02.2010 - 02:17
|
||||||
![]() ![]() ![]() Beiträge: 108 Mitglied seit: 14.11.2008 Benutzergruppe: Informatik (Bachelor) 5. Semester Informatik (Bachelor) |
Der Fehler liegt nicht an der Expression, sondern daran das wir Matcher.find() irgendwie falsch benutzen:
Aus irgendeinem Grund wird der String.length()-1te Character (also der letzte) nicht/falsch beachtet. Bei einelementigen String knallts dann.
funktioniert genau wie gewünscht... *schulterzuck* edith: (b?cc|x) als Pattern funktioniert für find() wie matches(), kann es sein das beim ursprünglichen Pattern find() ertmal (b) als Subpattern betrachtet? Der Beitrag wurde bearbeitet von Chris am 13.02.2010 - 02:20 |
||||||
'der die Mantikoren verspeiste' |
Geschrieben: 15.02.2010 - 01:52
|
![]() ![]() ![]() ![]() Beiträge: 303 Mitglied seit: 03.03.2005 Benutzergruppe: Informatik (Bachelor) 5. Semester Informatik (Bachelor) |
Huch, was macht ihr denn da Feines?
| ist greedy, glaub ich. ((b)?x|cc) (IMG: http://img121.imageshack.us/img121/3171/regexbla.png) |
'Doppel-As' |
Geschrieben: 15.02.2010 - 14:34
|
||
![]() ![]() ![]() Beiträge: 108 Mitglied seit: 14.11.2008 Benutzergruppe: Informatik (Bachelor) 5. Semester Informatik (Bachelor) |
|
||
'der die Mantikoren verspeiste' |
Geschrieben: 15.02.2010 - 19:41
|
||||
![]() ![]() ![]() ![]() Beiträge: 303 Mitglied seit: 03.03.2005 Benutzergruppe: Informatik (Bachelor) 5. Semester Informatik (Bachelor) |
new fags can't triforce ▲ ▲ ▲ me win? (Verdammt, ich brauch Schlaf) |
||||
'Mitglied' |
Geschrieben: 08.03.2010 - 14:12
|
![]() ![]() Beiträge: 40 Mitglied seit: 14.09.2006 Benutzergruppe: Technische Informatik 3. Semester Informatik (Master) |
Wahrsscheinlich ist dieser Thread schon verjährt. Aber ich gebe trotzdem mal meinen Senf dazu :clown:
Zuerstmal der Hinweis, dass es für Außenstehende interessant wäre zu wissen, was denn bspw. erfolgreich gematcht werden soll (verzeiht das Denglisch). Außerdem erschließt sich mir nicht, warum das 'b' und im laufe des Threads eigentlich ALLES gruppiert werden muss. Wie auch immer... (b)?cc|x matcht u.a. "...bcc...", "...cc...", "...x..." Und das 'b' ist ggf über group(1) abzurufen. So zumindest die Theorie. Dass ein 'x' als letztes Zeichen im String reel nicht gematcht wird, erschließt sich mir auch nicht. Schließlich funktionieren äquivalente Reguläre Ausdrücke wie:
Ansonsten hatte ich im Threadverlauf den Eindruck, dass es nicht verkehrt wäre, wenn Ihr Euch nochmal das Thema Groups sowie greedy/reluctant Quantifiers näher anschaut. Eine sehr gute Seite zum Thema RegEx ist auch: Regular-Expressions.infoMfG Björn |
|
![]() ![]() ![]() |