| 

.NET C# Java Javascript Exception

Groovy RegEx

Dies ist das Archiv des ehemaligen Forums zum Thema Groovy, Grails, Griffon und Bean Scripting Framework, welches unter groovy-forum.de existierte. Die neue Adresse des Groovy-Forums ist: http://codekicker.de/fragen/themen/groovy.


Groovy RegEx

fx - 17.10.2008 20:07
Hallo!

Ich spiele gerade etwas mit RegEx herum (relativ neu auf dem Gebiet) und komme momentan nicht weiter.
Ich habe eine Range, die ich durchlaufe, die einem Muster entsprechen soll.

1. Muster besagt, dass nur die Zahlen 0, 2, 4, 6 und 8 enthalten sein dürfen (je nur einmal).
2. Muster besagt, dass die Zahlen 0, 2, 4, 6 und 8 vorhanden sein müssen (je nur einmal), jedoch auch andere zusätzlich erlaubt sind.

def doIt(start, stop){
	nums = (start..stop).findAll { n ->
		n.toString() ==~ /regex hierher/
	}
	return nums
}

Meine bisherigen Versuche mislangen leider oder erfüllten nicht exakt, was ich wollte.
Vielleicht könnt Ihr mir weiterhelfen!

Gruß
Felix


Re: Groovy RegEx

christian - 17.10.2008 22:33
Hallo Felix,

ich glaube, für deinen Zweck sind reguläre Ausdrücke einfach nicht das mittel der Wahl.

Etwas wie folgendes Konstrukt dürfte einfacher und zur Laufzeit schneller sein:
def liste = [2, 4, 6, 8]
if (2 in liste) print "ist in der Liste"

Das kombinierst du dann noch mit einer Schleife oder Closure und fertig.

Gruß
Christian


Re: Groovy RegEx

fx - 17.10.2008 23:17
Hallo Manfred!

RegEx war mir noch recht neu, es waren also nur Spielereien.
Es ging darum, zu prüfen, ob eine Zahl bestimmte Zeichen (in diesem Fall auch Zahlen) enthält.

Beispiel:
Liste mit zulässigen Zahlen: 0, 2, 4, 6, 8
Zahl: 24680
Ergebnis: Gültig, alle Zahlen kommen vor
Zahl: 84602
Ergebnis: Gültig, alle Zahlen kommen vor
Zahl: 12345
Ergebnis: Ungültig, nicht alle Zahlen aus der Liste kommen vor


Und diese Spielerei habe ich etwas erweitert und gesagt, dass
1. Fall: nur die Zahlen 0, 2, 4, 6 und 8 enthalten sein dürfen (je nur einmal).
2. Fall: nur die Zahlen 0, 2, 4, 6 und 8 vorhanden sein müssen (je nur einmal), jedoch auch andere zusätzlich erlaubt sind.

Das wollte ich nun mit zwei RegEx Mustern prüfen.
Ich hoffe, ich konnte mein "Problem" näher beschreiben und verstehst nun, was ich vor hatte :-]

Gruß
Felix


Re: Groovy RegEx

alaska - 23.12.2008 04:15
hallo !

habs gefunden, habs nicht gesucht aber bin zufällig draufgekommen

expr `echo "24680" | sed -e 's/[0-9]/ = &/g' -e 's/[^84602]//g'`

solange du eine oder mehrere richtige zahlen eingibst, funkts, auch wenn du z. B. 3x die 2
eingibst, dann wird einmal die treffende zahl ausgegeben.

Gibst du lauter falsche Zahlen ein, gibts einen Syntaxfehler.

Vielleicht nicht die schönste lösung, aber sie funkt ja.
Ob das auch in der Funktion funktioniert, hab ich nicht ausprobiert, den Syntaxfehler kannst du
mit der Errorumleitung umgehen.
P.S: bin da kein Krösus - eher ein blindes Huhn, das ein Körndl....


Stelle deine Groovy-Frage jetzt!


Diese Seite zeigt den Thread "Groovy RegEx" der ehemaligen Webseite groovy-forum.de, welche durch einen Serverunfall zerstört wurde. codekicker.de hat viele Konversationen über die beliebte Programmiersprache Groovy und zugehörige Frameworks wie das Grails-Framework retten können.

Hast Du eine Frage zum Thema Groovy, Grails oder allgemein Java? Viele ehemalige groovy-forum.de Mitglieder beantworten dir auf codekicker.de deine Frage! Stelle jetzt eine Frage!

Viele weitere Diskussionen zu Grails und Groovy befinden sich auf der Threadübersicht des alten groovy-forum.de.