RegExp - Immer zutrefend?
RomanD
- php
0 dedlfix0 seth_not@home
Hi,
gibt es eine Möglichkeit rauszufinden, ob ein regulärer Ausdruck auf alle beliebigen Zeichenketten zutrifft?
Gruß
echo $begrüßung;
gibt es eine Möglichkeit rauszufinden, ob ein regulärer Ausdruck auf alle beliebigen Zeichenketten zutrifft?
Für "alle beliebigen Zeichenketten" braucht man keinen regulären Ausdruck. Beschreibe doch bitte dein Anliegen genauer.
echo "$verabschiedung $name";
Ich habe eine Suchfunktion bei der man einen regulären Ausdruck angeben kann. Wenn der Ausdruck dazu führen würde dass Alles angezeigt wird, soll eine Meldung ausgegeben werden.
echo $begrüßung;
Ich habe eine Suchfunktion bei der man einen regulären Ausdruck angeben kann. Wenn der Ausdruck dazu führen würde dass Alles angezeigt wird, soll eine Meldung ausgegeben werden.
Ich denke, da gibt es jede Menge Möglichkeiten, solch einen RegExp zu erstellen. Wenn du die "alles"-RegExp filterst, kommt der nächste und gibt einen "99%"-RegExp ein. Wenn dein eigentliches Ziel ist, eine Überlastung zu verhindern, dann kommst du damit nicht ans Ziel. Wenn es dein Ziel ist, die Ausgabe nicht übermäßig anwachsen zu lassen, die eigentliche Suche aber kaum Ressourcen verbraucht, dann nähme ich lieber eine Einschränkung vor, die sich an der Zahl der Fundstellen orientiert.
Was mir spontan an Suchmustern einfallen:
.*
.{0,}
\d|\D - Jedes dieser sich gegenseitig ausschließenden Muster, verknüpft mit Oder ergibt die komplette Menge.
e - Der Buchstabe e dürfte wohl in fast jedem Ergebnis zu finden sein, gehört damit zur "99%"-Klasse.
Außerdem ist noch interessant, für welche RegExp-Syntax du deine Frage beantwortet haben möchtest.
echo "$verabschiedung $name";
Hallo,
Ich habe eine Suchfunktion bei der man einen regulären Ausdruck angeben kann. Wenn der Ausdruck dazu führen würde dass Alles angezeigt wird, soll eine Meldung ausgegeben werden.
Ich fürchte, das geht nicht, oder nur mit gigantischem Aufwand. Es gibt theoretisch unendlich viele reguläre Ausdrücke, die alles matchen. Beispiele:
/.*/
/^(.|[a-f]{1,2})*/
/(a|b|.)*/
und und und...
Um sowas zu erkennen, bevor der Ausdruck angewendet wird, müsstest du quasi eine eigene RegExp-Engine bauen.
Kannst du nicht einfach das Ergebnis des regulären Ausdrucks mit dem gesamten String vergleichen und an Stelle des Ergebnisses dann die Meldung ausgeben, falls beide identisch sind?
Gruß, Don P
gudn tach!
gibt es eine Möglichkeit rauszufinden, ob ein regulärer Ausdruck auf alle beliebigen Zeichenketten zutrifft?
am besten analytisch. letztlich muesste man den ausdruck ja auf // herunterbrechen koennen.
black-box-tests sind hier i.a. eher unangebracht.
aber die antwort auf die von dedlfix gestellte frage nach dem sinn deines vorhabens interessiert mich auch.
prost
seth