Hallo dedlfix!
Das wurde doch beantwortet.
Nein, wo?
Der Ausdruck muss auf jeden Fall mit ~d{5,10} beginnen und nicht mit ~^d{5,10}, weil die Zahl ja nicht zwingend gleich zu Beginn des zu untersuchenden Strings stehen muss. Das Problem ist das Ende der Zahl, also die letzte Ziffer.
Du darfst den Anfang nicht unterschlagen, denn 5 bis 10 Ziffern können auch nach beliebig vielen anderen Ziffern folgen.
Das fand ich zuerst unlogisch! Wenn direkt vor zB. 254 die Ziffern 85 stehen, dann ist die Zahl ja sowieso nicht mehr 254 sondern 85254. Das ändert ja nichts daran, dass im Suchstring eine Aufeinanderfolge von Ziffern mindestens aus 5 und höchstens aus 10 Ziffern bestehen soll, wenn es zu einem Treffer kommt. Und der Anfang einer Zahl ist die erste Ziffer. Wenn davor "beliebig vielen anderen Ziffern" sind, dann ist es ja nicht mehr der Anfang.
Aber jetzt dürfte mir der Knopf aufgegangen sein und ich glaube, ich erkenne meinen Denkfehler. Die REGEX wird ja wie eine Schablone "über den Suchstring gelegt" und dann Zeichen für Zeichen nach rechts geschoben. Deshalb muss natürlich bei 5-10 Ziffern auch _davor_ ein Nicht-Ziffernzeichen sein, weil 991111112345a entspricht nicht dem Suchschema, aber bei 1111112345 würde die Regex-Schablone "greifen" und es gäbe fälschlicherweise einen Treffer, wenn man nicht definiert, dass auch davor ein Nicht-Ziffern-zeichen stehen muss. Sehe ich das soweit richtig?
d vs. \d
Oje, das war ein Copy & Paste Fehler. Natürlich soll das \d und nicht d heißen. Und somit ergibt '~\d{5,10}\D~' für '12345a' auch einen Treffer.
OK, für das Ursprungsproblem sehe ich trotzdem keine Lösung. Einer meiner erfolgreichsten Fehlversuche ist immer noch das '~\D\d{5,10}\D~'. Das funktioniert aber nur, so lange der Treffer nicht ganz zu Beginn oder ganz zum Schluss des Suchstrings steht. In diesen beiden Fällen zeigt er nämlich keinen Treffer an. Das heißt, es müsste sowas sein wie ein '\D oder Beginn' sowie ein \D oder Ende' vor und hinter dem d{5,10}. Nur wie definiert man das? Ich finde nichts im Internet und auch nichts in jenem Tutorial, in dem ich immer nachsehe, wenn es um dieses Thema geht.
Mit lieben Grüßen
Melvin Cowznofski
What – me worry?