|
You last visited: Today at 05:48
Advertisement
RegEx Generator Version 1
Discussion on RegEx Generator Version 1 within the Web Development forum part of the Coders Den category.
04/01/2013, 22:23
|
#1
|
elite*gold: 25
Join Date: Apr 2010
Posts: 1,019
Received Thanks: 331
|
RegEx Generator Version 1
Hi!
Es tuen sich ja immer noch viele mit den bekannten *TADAM* Regulären Ausdrücken! Es gibt zum verrecken noch mal keinen einigermaßen guten Editor bzw. Generator mit dem man sich diese einfach und schnell zusammen bauen kann. Hab mich mal an die Arbeit gesetzt und angefangen, einen zu schreiben!
Da dies die ersten Funktionen sind die implementiert sind, wäre es cool, falls ihr einen Fehler entdeckt, diesen direkt zu melden.
Die URL:
Ebenfalls sind Verbesserungsvorschläge, Wünsche oder vereinfachte Handhabungsvorschläge gerne gesehen! In naher Zukunft geplant sind bereits folgende Features:
- Delimiter angeben
- Modifier angeben (ebenfalls per Checkbox Prinzip)
- Mehrere Bereiche angeben (beispielsweise sich durch 4 einzelne Bereiche und eine globale Box eine IP zusammenbauen!)
|
|
|
04/01/2013, 23:00
|
#2
|
elite*gold: 0
Join Date: Sep 2010
Posts: 167
Received Thanks: 14
|
Ganz nettes kleines Tool, allerdings bitte nicht vergessen du musst auch bei solchen Webseiten ein Impressum haben!
|
|
|
04/01/2013, 23:36
|
#3
|
elite*gold: 25
Join Date: Apr 2010
Posts: 1,019
Received Thanks: 331
|
Das ganze befindet sich momentan im Test im einigermaßen geschlossenen Bereich. Sobald ich dieses offiziell in mehreren Foren posten werde, werden auch die rechtlichen Seiten abgedeckt. Momentan ist der Link nur hier und im engeren Kreis bekannt wodurch er nicht dementsprechend öffentlich aufrufbar ist.
|
|
|
04/01/2013, 23:38
|
#4
|
elite*gold: 1715
Join Date: Dec 2011
Posts: 672
Received Thanks: 207
|
Jo. Seiten in Entwicklung brauchen ohnehin nicht unbedingt ein Impressum.
Ich frage mich nur, was ich mit dem Tool jetzt anfangen soll... vermutlich nichts weiter.
Richtet sich wahrscheinlich nur an Anfänger..?
|
|
|
04/02/2013, 06:59
|
#5
|
elite*gold: 0
Join Date: Jan 2013
Posts: 13
Received Thanks: 0
|
Ein netter "Generator" wäre noch dies hier, ich denke man kann ihn auch ausserhalb von den input feldern benutzen
Aber sonst, schick deiner
|
|
|
04/02/2013, 08:47
|
#6
|
elite*gold: 25
Join Date: Apr 2010
Posts: 1,019
Received Thanks: 331
|
HTML5 Pattern sind ebenfalls normale Reguläre Ausdrücke welche du dementsprechend auch hiermit generieren kannst.
Quote:
|
Richtet sich wahrscheinlich nur an Anfänger..?
|
Ganz die Frage. Ich hab auch nicht immer alle Zeichen im Kopf gehabt die escaped werden müssen oder wo der Unterschied zwischen + und * ist. Man vergisst so einiges da es nichts alltägliches ist mit was man umzugehen hat, aber ja, primär richtet es sich natürlich an Neulinge.
|
|
|
04/03/2013, 11:25
|
#7
|
elite*gold: 0
Join Date: Apr 2005
Posts: 323
Received Thanks: 114
|
Quote:
Originally Posted by PseudoPsycho
Jo. Seiten in Entwicklung brauchen ohnehin nicht unbedingt ein Impressum.
Ich frage mich nur, was ich mit dem Tool jetzt anfangen soll... vermutlich nichts weiter.
Richtet sich wahrscheinlich nur an Anfänger..?
|
Und so ziemlich jeden Studenten im ersten Semester :P
Wobei es eher ein Kickstarter ist. Generator:
|
|
|
04/03/2013, 11:57
|
#8
|
elite*gold: 77
Join Date: May 2008
Posts: 5,430
Received Thanks: 5,878
|
Quote:
Originally Posted by Synatex
Hi!
Es tuen sich ja immer noch viele mit den bekannten *TADAM* Regulären Ausdrücken! Es gibt zum verrecken noch mal keinen einigermaßen guten Editor bzw. Generator mit dem man sich diese einfach und schnell zusammen bauen kann. Hab mich mal an die Arbeit gesetzt und angefangen, einen zu schreiben!
Da dies die ersten Funktionen sind die implementiert sind, wäre es cool, falls ihr einen Fehler entdeckt, diesen direkt zu melden.
Die URL:
Ebenfalls sind Verbesserungsvorschläge, Wünsche oder vereinfachte Handhabungsvorschläge gerne gesehen! In naher Zukunft geplant sind bereits folgende Features:
- Delimiter angeben
- Modifier angeben (ebenfalls per Checkbox Prinzip)
- Mehrere Bereiche angeben (beispielsweise sich durch 4 einzelne Bereiche und eine globale Box eine IP zusammenbauen!)
|
Jetzt dachte ich ich habe da ein schönes Drag & Drop Panel zum Reinziehen von einzelnen Elementen, also eine komplette Abstraktion und dann sehe ich lediglich eine Seite, die halt ein paar Knöpfe hat, um die Sachen in eine Textbox zu schreiben.
Oder auch interessant wäre gewesen einen Bereich eines Strings zu markieren und diesen dann in RegEx umzuwandeln. Noch besser wäre die Möglichkeit mehrere Strings eingeben zu können aus denen dann RegEx berechnet/abgeleitet wird.
Aber so wie dein Tool momentan ist verstehe ich nicht was es groß vereinfachen soll. Vielleicht wäre es noch gut eine RegEx-Implementierung in unterschiedlichen Sprachen zu gewähren, denn AutoIt, PHP und C/C++ haben alle unterschiedliche Syntaxen für RegEx. Bei dir lässt sich also nur vermuten für welche Sprache der RegEx-Editor ist.
|
|
|
04/03/2013, 12:16
|
#9
|
elite*gold: 25
Join Date: Apr 2010
Posts: 1,019
Received Thanks: 331
|
Quote:
|
Jetzt dachte ich ich habe da ein schönes Drag & Drop Panel zum Reinziehen von einzelnen Elementen, also eine komplette Abstraktion und dann sehe ich lediglich eine Seite
|
Sowas gibt es bereits. Deshalb wollte ich halt die schönen Knöpfchen nehmen. Im Grunde kann man das ganze später als "Übersetzer" => Generator verstehen, der für normale Menschen verständliche Punkte das ganze in RegEx übersetzt. Ob man jetzt ein Feld reinzieht um eine Zahl zu erhalten oder ein Knopf drückt, nun ja, einen wirklichen Unterschied ergibt das nicht.
Quote:
|
Oder auch interessant wäre gewesen einen Bereich eines Strings zu markieren und diesen dann in RegEx umzuwandeln.
|
Ist bereits in Arbeit und auch so geplant.
Quote:
|
Aber so wie dein Tool momentan ist verstehe ich nicht was es groß vereinfachen soll.
|
Was würde es denn besser vereinfachen, wenn es per Drag & Drop steuerbar wäre? Es geht darum, RegEx Ausdrücke zu generieren - für normale menschen Verständlich - was hiermit möglich ist. Die Leute, die damit umgehen können, brauchen die Teile auch nicht.
Quote:
|
Vielleicht wäre es noch gut eine RegEx-Implementierung in unterschiedlichen Sprachen zu gewähren, denn AutoIt, PHP und C/C++ haben alle unterschiedliche Syntaxen für RegEx.
|
Soweit ich gelesen habe sind die Standards der Ausdrücke überall gleich. Jedenfalls das was ich aus Erfahrung jetzt mit AutoIT, PHP, RewriteRules, JS und HTML5 Pattern lernen durfte. An diese Standards werde ich mich vorerst weiterhin halten
|
|
|
04/03/2013, 14:26
|
#10
|
elite*gold: 0
Join Date: Jan 2012
Posts: 759
Received Thanks: 416
|
Feedback:
Wie kann ich damit einen regulären Ausdrück generieren, der alle IPv4-Adressen (und nur diese) abdeckt? (Weil das in der Einleitung als Beispiel genannt wird)
Was bringt "Eigener Bereich"? (Im Sinne von: Inwiefern beeinflusst "Eigener Bereich" die Menge, die der Ausdruck beschreibt?)
Wenn ich bei "Weitere erlaubte Zeichen" etwas eingebe wird der Ausdruck nicht aktualisiert (mit Chrome). Ebenso wenn ich bei Min./Max-Länge eine Zahl eingebe statt +/- anzuklicken.
Das Minimum kann größer sein als das Maximum - ist das erlaubt?
Meine Meinung:
Sonst sehe ich in dem Tool auch keinen größeren Sinn. Die regulären Ausdrücke, die man damit generieren kann, kann man doch auch ohne größere Mühe selbst schreiben (bzw. die Symbole auswendig lernen).
Klammern haben neben der Funktion als Aufzeichnungsgruppe die selbe Bedeutung wie überall. Alles in [] wird alternativ statt konkatenativ verknüpft. Dass a-c eine Abkürzung für abc ist ist ebenfalls leicht zu merken. Die Quantore funktionieren wie Intervalle in Mathe, nur dass {} statt [] gesetzt werden. +, *, ? muss man sich im Grunde nicht merken, denn auch das sind nur Abkürzungen für häufige Quantore. Dennoch sind die Symbole sinnvoll gewählt: + -> 1+, * -> Kleenesche Hülle, zu ? fällt mir nichts ein  .
... Und mehr nutzt der Generator nicht?!
Ich würde behaupten, dass das jeder in 20 Minuten oder so lernen kann, weswegen ich persönlich die Anwendung etwas unnötig finde (ich will nicht flamen, nur meine Meinung).
Edit: Alle Zeichen escapen: Kann man nicht mit \Q..\E alle Zeichen ".." automatisch escapen lassen?
Quote:
|
Oder auch interessant wäre gewesen einen Bereich eines Strings zu markieren und diesen dann in RegEx umzuwandeln.
|
Inwiefern unterscheidet sich der generierte reguläre Ausdruck dann vom markierten Bereich (abgesehen vom Escapen)?
Wenn ich in "Mein Haus ist schön" den Bereich "Haus ist" markiere, ist der reguläre Ausdruck dafür doch "Haus ist". Oder verstehe ich diese Idee falsch?
|
|
|
04/03/2013, 15:10
|
#11
|
elite*gold: 77
Join Date: May 2008
Posts: 5,430
Received Thanks: 5,878
|
Quote:
Originally Posted by dowhile
Inwiefern unterscheidet sich der generierte reguläre Ausdruck dann vom markierten Bereich (abgesehen vom Escapen)?
Wenn ich in "Mein Haus ist schön" den Bereich "Haus ist" markiere, ist der reguläre Ausdruck dafür doch "Haus ist". Oder verstehe ich diese Idee falsch?
|
Deswegen auch meine Fortführung mit mehreren Strings:
Gehen wir von folgenden Eingaben aus:
1. "Ich besitze 2.39€"
2. "Das Haus ist 3,4m groß"
3. "Aller guten Dinge sind 3."
und markiere da jetzt jeweils:
"2.39", "3,4" und "3".
Dann soll mir der Generator einen regulären Ausdruck draus machen, der für alle 3 Beispiele funktioniert (und damit dann auch für einen Großteil aller Zahlen). Das wäre wirklich eine Erleichterung, weil man sich hier wirklich überhaupt nicht mehr mit RegEx ansich beschäftigen muss.
@Synatex, Drag & Drop
Deine Methode ist sehr eingeschränkt, wie soll ich z.b. etwas derartiges mit deinem Generator machen?
Quote:
Ich müsste F.o unten selbst eingeben und damit würde das Ganze voraussetzen, dass ich schon ein bisschen was von RegEx weiß und selbst dann geht es nicht, da mir dein Programm dann folgendes ausgibt:
Quote:
Hätte ich jetzt Drag & Drop, dann könnte ich zuerst einen Bereich erstellen und diesen dann anschließend füllen indem ich zuerst ein F, dann einen "." (=Irgendein Zeichen) und dann ein o reinziehe.
Anschließend ziehe ich außerhalb von meinem Ausdruck noch ein "*" hin.
Drag & Drop erleichtert immer alles für Anfänger, das ist einfach so und selbst wenn ein Programm exakt dieselben Funktionen enthält wie ohne Drag & Drop, jeder wird ein Drag & Drop-Programm bevorzugen.
Von daher ganz konkret auf deine Frage geantwortet:
Drag & Drop bringt:
1. Erleichterung und Abstraktion für Anfänger
2. Intuitivere Benutzung
3. Schnellere Ergebnisse
Edit:
@ Gleicheit der RegExs
Suche nach Case-Insensitive "php" in einem String:
In PHP:
PHP Code:
preg_match("/php/i", "PHP ist die Web-Scripting-Sprache der Wahl.")
In AutoIt:
PHP Code:
StringRegExp("(i?)php", "PHP ist die Web-Scripting-Sprache der Wahl.", 2)
In C/C++
PHP Code:
std::string s ("PHP ist die Web-Scripting-Sprache der Wahl"); std::regex e ("php"); std::regex_match (s,e,std::icase)
Also für mich sieht das sehr unterschiedlich aus und das ist nur einer von vielen Unterschieden.
|
|
|
04/03/2013, 16:07
|
#12
|
elite*gold: 25
Join Date: Apr 2010
Posts: 1,019
Received Thanks: 331
|
Quote:
Originally Posted by dowhile
Feedback:
Wie kann ich damit einen regulären Ausdrück generieren, der alle IPv4-Adressen (und nur diese) abdeckt? (Weil das in der Einleitung als Beispiel genannt wird)
|
Steht unter "kommende Features"
Quote:
|
Was bringt "Eigener Bereich"? (Im Sinne von: Inwiefern beeinflusst "Eigener Bereich" die Menge, die der Ausdruck beschreibt?)
|
Weiß nicht wie es in anderen Sprachen ist, da ich es primär für mich genutzt hatte und das ganze daher nur auf JS/PHP/RR Basis getestet habe. Der eigene Bereich gibt einen Bereich an, der beim auslesen noch einmal gesondert innerhalb des Ausdrucks wiedergegeben wird.
Ein Beispiel:
129.104.33.294
([0-9]+).([0-9]+).([0-9]+).([0-9]+)
Würde an sich die IP als Suchtreffer zurückliefern, ebenfalls aber die 4 einzeln angegebenen Bereiche.
Quote:
|
Wenn ich bei "Weitere erlaubte Zeichen" etwas eingebe wird der Ausdruck nicht aktualisiert (mit Chrome). Ebenso wenn ich bei Min./Max-Länge eine Zahl eingebe statt +/- anzuklicken.
|
Sind ans Change-Event gebunden, das wird in den meisten Browsern erst nachdem der Focus genommen wurde ausgelöst. Ich schaue mich nach einer Alternative um die dies sofort erledigt.
Quote:
|
Das Minimum kann größer sein als das Maximum - ist das erlaubt?
|
Werde ich in der nächsten Version beheben, ist nicht gewollt.
Quote:
Meine Meinung:
Sonst sehe ich in dem Tool auch keinen größeren Sinn. Die regulären Ausdrücke, die man damit generieren kann, kann man doch auch ohne größere Mühe selbst schreiben (bzw. die Symbole auswendig lernen).
Klammern haben neben der Funktion als Aufzeichnungsgruppe die selbe Bedeutung wie überall. Alles in [] wird alternativ statt konkatenativ verknüpft. Dass a-c eine Abkürzung für abc ist ist ebenfalls leicht zu merken. Die Quantore funktionieren wie Intervalle in Mathe, nur dass {} statt [] gesetzt werden. +, *, ? muss man sich im Grunde nicht merken, denn auch das sind nur Abkürzungen für häufige Quantore. Dennoch sind die Symbole sinnvoll gewählt: + -> 1+, * -> Kleenesche Hülle, zu ? fällt mir nichts ein .
... Und mehr nutzt der Generator nicht?!
Ich würde behaupten, dass das jeder in 20 Minuten oder so lernen kann, weswegen ich persönlich die Anwendung etwas unnötig finde (ich will nicht flamen, nur meine Meinung).
|
Danke für die Meinung. Wie gesagt ist dies nur die erste Version. Es wird noch Support für die Modifier geben und das ganze - wie beschrieben - in einzelne Bereiche unterteilbar werden. Man könnte viele Sachen "mal eben so lernen", aber wenn du dich mal in Google oder generell in Foren umschaust wirst du merken das sehr sehr viele Leute damit Probleme haben - frag mich nicht warum - dies soll ihn erstens eine Hilfestellung sein und zweitens kann man auch mal schnell auf ein Häkchen klicken wenn man nicht mehr weiß welches Zeichen wozu gehört!
Quote:
|
Edit: Alle Zeichen escapen: Kann man nicht mit \Q..\E alle Zeichen ".." automatisch escapen lassen?
|
Kann ich dir leider nicht sagen, sorry.
Quote:
Inwiefern unterscheidet sich der generierte reguläre Ausdruck dann vom markierten Bereich (abgesehen vom Escapen)?
Wenn ich in "Mein Haus ist schön" den Bereich "Haus ist" markiere, ist der reguläre Ausdruck dafür doch "Haus ist". Oder verstehe ich diese Idee falsch?
|
Er meinte es glaube ich eher so:
"Mein Haus ist schön" => "Haus ist" => /[a-u ]{8}/i . Das man unabhängig davon was nun angegeben worden ist auch weitere Werte empfängt.
--------------------------------------------------------------------------
Quote:
|
Ich müsste F.o unten selbst eingeben und damit würde das Ganze voraussetzen, dass ich schon ein bisschen was von RegEx weiß
|
Das trifft für alle Leute zu die "Weitere erlaubte Zeichen mit Komma getrennt" als RegEx Kenntnisse betrachten. (Sofern ich es richtig verstanden habe?)
Quote:
|
Hätte ich jetzt Drag & Drop, dann könnte ich zuerst einen Bereich erstellen
|
Mehrere Bereiche sind bereits geplant.
Quote:
Von daher ganz konkret auf deine Frage geantwortet:
Drag & Drop bringt:
1. Erleichterung und Abstraktion für Anfänger
2. Intuitivere Benutzung
3. Schnellere Ergebnisse
|
Abgesehen von 3 Stimme ich dir durchaus zu. Schnellere Ergebnisse ist wohl Ansichtssache bzw. das, womit man vertraut ist. Ich werde schauen, nachdem Bereiche und alles eingefügt sind, das ganze auch auf D&D umzustellen, soweit es mir möglich ist. An 2 Baustellen arbeiten bei einem halbfertigen Projekt will ich jedoch nicht  . Falls du nach vorgefertigten Sachen bist die du einfach nur reinziehen brauchst - wo du aber letztendlich RegEx Kentnisse für benötigst - kannst du hier schauen:
Quote:
Edit:
@ Gleicheit der RegExs
|
Ebenfalls hast du die Möglichkeit Modifier in PHP anzugeben die für die bestimmten Bereiche zuständig sind, so wie du es in AutoIT gemacht hast. In dem Fall beziehst du dich aber auch nur auf die Modifier, denn der rest, der momentan im Generator genutzt wird, sollte immerhin in den Sprachen die ich aufgelistet habe funktionieren (mit dementsprechenden delimitern).
Bei C++ haste ja auch nur den Modifier genutzt und sonst an sich überhaupt nichts um den regulären Ausdruck zu bestimmen. Wenn man weiß das man die Modifier einfach hinten weglassen muss, ist es ja nun nicht ganz so kritisch.
Danke an beide für das ausführliche Feedback!
|
|
|
04/03/2013, 16:50
|
#13
|
elite*gold: 0
Join Date: Jan 2012
Posts: 759
Received Thanks: 416
|
Quote:
Deswegen auch meine Fortführung mit mehreren Strings:
Gehen wir von folgenden Eingaben aus:
1. "Ich besitze 2.39€"
2. "Das Haus ist 3,4m groß"
3. "Aller guten Dinge sind 3."
und markiere da jetzt jeweils:
"2.39", "3,4" und "3".
Dann soll mir der Generator einen regulären Ausdruck draus machen, der für alle 3 Beispiele funktioniert (und damit dann auch für einen Großteil aller Zahlen). Das wäre wirklich eine Erleichterung, weil man sich hier wirklich überhaupt nicht mehr mit RegEx ansich beschäftigen muss.
|
D.h. der Algorithmus soll eine reguläre Sprache bilden, für die du einige Wörter vorgibst, er dann die restlichen Wörter "errät" und anschließend einen regulären Ausdruck generiert, der diese Sprache beschreibt?
Wenn ich die Wörter "100.100.100.100", "192.168.178.0" und "255.255.255.0" markiere - wie soll der Algorithmus daraus erraten, dass jede gültige IPv4 Adressen ein Wort sein soll?
Anderes Beispiel: "60", "4", "6", "18" - ich will jede hexadezimale Zahl. Wie soll der Algorithmus hier funktionieren? Selbst bei "0x60", "0x4", "0x6", "0x18" ist das schwer. Vielleicht will ich auch alles, was dem Muster "0x[a-z0-9]+" folgt.
Bei deinem Beispiel nimmst du an, dass der Algorithmus direkt erkennt, dass du alle Zahlen mit optionalen Nachkommastellen willst. Aber woher weiß der Algorithmus, dass du das möchtest? Woher weiß er, dass das dem uns üblichen Format für Kommazahlen entspricht? Man müsste es dem Algorithmus sagen - und auch, wie das Format für hexadezimale Zahlen entspricht. Und dann kann man den Algorithmus nur dafür nutzen und für nichts anderes.
|
|
|
04/03/2013, 17:27
|
#14
|
elite*gold: 77
Join Date: May 2008
Posts: 5,430
Received Thanks: 5,878
|
Quote:
Originally Posted by dowhile
D.h. der Algorithmus soll eine reguläre Sprache bilden, für die du einige Wörter vorgibst, er dann die restlichen Wörter "errät" und anschließend einen regulären Ausdruck generiert, der diese Sprache beschreibt?
Wenn ich die Wörter "100.100.100.100", "192.168.178.0" und "255.255.255.0" markiere - wie soll der Algorithmus daraus erraten, dass jede gültige IPv4 Adressen ein Wort sein soll?
Anderes Beispiel: "60", "4", "6", "18" - ich will jede hexadezimale Zahl. Wie soll der Algorithmus hier funktionieren? Selbst bei "0x60", "0x4", "0x6", "0x18" ist das schwer. Vielleicht will ich auch alles, was dem Muster "0x[a-z0-9]+" folgt.
Bei deinem Beispiel nimmst du an, dass der Algorithmus direkt erkennt, dass du alle Zahlen mit optionalen Nachkommastellen willst. Aber woher weiß der Algorithmus, dass du das möchtest? Woher weiß er, dass das dem uns üblichen Format für Kommazahlen entspricht? Man müsste es dem Algorithmus sagen - und auch, wie das Format für hexadezimale Zahlen entspricht. Und dann kann man den Algorithmus nur dafür nutzen und für nichts anderes.
|
Das ist das Gebiet der künstlichen Intelligenz. 
Dein 1. Beispiel kann ich dir erklären:
Quote:
1."100.100.100.100"
2."192.168.178.0"
3. "255.255.255.0"
|
Zuerst einmal könnte der Algorhitmus schauen wie viele Zahlen von 0-9 hier drin vorkommen und was für einen Anteil sie einnehmen:
Folgende Zahlen wurden gefunden:
0,1,2,5,6,8,9
Das sind 7 Zahlen, insgesamt gibt es 10 Zahlen, da keine Zahl ein Buchstabe ist, könnte man von dem Zehnersystem ausgehen und sagen:
Die Chance, dass der Benutzer alle Zahlen meint ist identisch mit der Anzahl benutzten Zahlen:
Also 7/10, die Chance, dass der Benutzer also den kompletten Zahlen-Bereich meint liegt bei 7/10, also wird das Programm wohl zum gesamten Zahlenbereich tendieren.
Anschließend analysiert es wann jeweils ein "." kommt. Das Programm stellt fest, dass immer 3 Zahlen kommen und dann ein "." außer am Ende, also wird die Regel auch dementsprechend angewandt.
An allen Stellen müssen es 3 Zahlen sein, außer am Ende, da müssen es mindestens 1 sein.
Damit würde die Regel so aussehen:
{3 beliebige Zahlen}.{3 beliebige Zahlen}.{3 beliebige Zahlen}.{min. 1 beliebige Zahlen}
Damit sind zwar so Sachen wie "123.123.12.2" ausgeschlossen, gibt man aber diese Adresse zusätzlich noch als Beispiel an, kann man die 2. Regel zu "Mindestens 2 Zahlen" ändern.
Zusätzlich kann man noch analysieren lassen, ob die Zahlen mit 0 beginnen bzw. welche mit 0 beginnen dürfen (nur die letzte).
Damit kriegt man also eine relativ gute Näherung des Problems und je mehr Beispiele man eingibt, desto besser ist diese Näherung (sollte man von der Mathematik her kennen).
Quote:
|
Anderes Beispiel: "60", "4", "6", "18" - ich will jede hexadezimale Zahl. Wie soll der Algorithmus hier funktionieren? Selbst bei "0x60", "0x4", "0x6", "0x18" ist das schwer. Vielleicht will ich auch alles, was dem Muster "0x[a-z0-9]+" folgt.
|
Bei "60", "4", "6", "18" weiß nicht einmal ein Mensch was du willst, wie soll das also eine Maschine wissen? -.-
In dem Fall "0x60", "0x4", "0x6", "0x18" ist das eindeutig, sogar relativ einfach in der Umsetzung.
Es wird untersucht mit was die Strings beginnen, hier stellt man fest, dass es immer mit "0x" beginnt. Im Programm kann jetzt einprogrammiert worden sein, dass wenn man unter einer bestimmten Anzahl Beispiele ist, "0x" als Hexadezimal-Code angenommen wird. Sollte man z.B. mehr als 8 Beispiele haben und alle besitzen nur Zahlen von 0-9, wird diese Vermutung widerrufen und man beschränkt sich auf den Bereich 0-9.
Logischerweise ist eine Intelligenz (welche Art auch immer) nur so schlau wie der Lehrer und wenn der Lehrer 10x dieselben Beispiele oder ähnlichen Beispiele eingibt, dann ist wohl ersichtlich, dass das Ergebnis nicht gut sein kann.
Kleines Beispiel dazu aus der Mathematik:
Wenn ich 1000x eine Summe von 2 Zahlen kleiner 10 rechne und dann plötzlich die Aufgabe kriege Zahlen mit 10 Ziffern und mehr zu addieren, wird auch der Mensch überfordert (nicht umsonst rechnet man in der Schule Stufenweise also bis 20, bis 100, bis 1000 und dann bis 100.000).
Deswegen merke:
Wenn der Lehrer gut ist und über seine Beispiele nachdenkt, ist der Algorhitmus auch intelligent genug, um in 99% der Fälle das richtige Ergebnis zu liefern. 100% Sicherheit bekommt man nie, das ist aber bei den intelligenten Wesen auch nicht anders. Beispielsweise kann man sich immer einmal verrechnen oder Vorzeichen vergessen usw.
|
|
|
04/03/2013, 17:31
|
#15
|
elite*gold: 25
Join Date: Apr 2010
Posts: 1,019
Received Thanks: 331
|
Okay, ich steig dann mal aus. Für mich ist das eher nur als kleines Nebenprojekt gedacht das einigen das Leben erleichtern soll, will meine wenige Zeit nun ungern in noch kompliziertere Sachen stecken
|
|
|
 |
|
Similar Threads
|
[C#]RegEx Problem
11/29/2011 - .NET Languages - 4 Replies
Also ich habe ein Problem, hab ein Patter erstellt:
rf_token: '(\w.*)'
Nach RegexBuddy gibt es 2 Machtes und in der zweitem Match ist richtige Wert.
Aber mit diesem Code bekomme ich Wert nicht wieso wo ist Fehler?
string re1 = "rf_token: '(\\w.*)'"; // Variable Name 1 Regex r = new Regex(re1, RegexOptions.IgnoreCase | RegexOptions.Singleline); Match m = r.Match(Winhttp.Body); String var1 = m.Groups.ToString();
|
Runescape Gold Generator New Version >>NO SHARECASH>>
03/12/2011 - Runescape - 4 Replies
edited.
IM STUPID FOR POSTING THIS (:
-gurgen
|
[C#] Problem mit Regex
07/11/2010 - .NET Languages - 2 Replies
Huhu,
Ich hab da ein kleines Problem was ich irgendwie nicht schaffe zu lösen..
Also ich hab folgenden Source:
public List<string> GetHtmlLinks(string html)
{
string linkPattern = "<a href=\"(.*?)\">(.*?)</a>";
MatchCollection linkMatches = Regex.Matches(html, linkPattern, RegexOptions.Singleline);
|
[c#] Regex Klasse
03/11/2010 - .NET Languages - 2 Replies
Hallo ich habe eine Frage zu der Regex Klasse.
Meine Seite hat folgenden Quelltext:
treffer>1<treffer
treffer>2<treffer
treffer>3<treffer
treffer>4<treffer
treffer>4<treffer
treffer>5<treffer
|
All times are GMT +1. The time now is 05:48.
|
|