Ich muss den Text der einstelligen Zahl finden.
Mein Code:
%Vor%(Ergebnis: 4 und 5)
Alles funktioniert perfekt, wollte nur fragen, ob es richtig ist, Leerzeichen zu verwenden? Vielleicht gibt es eine andere Möglichkeit, eine einstellige Zahl zu unterscheiden.
Danke
Zunächst entspricht [\d]{1}
\d
.
Was Ihre Frage anbelangt, wäre es besser, eine Assertion mit einer Breite von null wie etwa lookbehind / lookahead oder zu verwenden Wortgrenze ( \b
). Andernfalls werden Sie keine aufeinanderfolgenden einzelnen Ziffern zuordnen, da das führende Leerzeichen der zweiten Ziffer dem nachfolgenden Leerzeichen der ersten Ziffer entspricht (und überlappende Übereinstimmungen werden nicht gefunden).
So würde ich das schreiben:
%Vor%Dies bedeutet "Passen Sie eine Ziffer nur an, wenn davor kein Leerzeichen vorhanden ist und hinter dem Zeichen kein Leerzeichen steht."
Ich habe das doppelte Negativ wie (?!\S)
anstelle von (?=\s)
verwendet, so dass Sie auch einzelne Ziffern am Anfang oder Ende der Zeichenfolge finden.
Ich bevorzuge das über \b\d\b
für Ihr Beispiel, weil es so aussieht, als wollten Sie nur übereinstimmen, wenn die Ziffer von Leerzeichen umgeben ist, und \b\d\b
würde die 4
und die 5
in einer Zeichenfolge wie übereinstimmen 192.168.4.5
Um Interpunktion am Ende zu ermöglichen, könnten Sie Folgendes verwenden:
%Vor% Fügen Sie zusätzliche Interpunktionszeichen hinzu, die nach der Ziffer für die Zeichenklasse zulässig sind (innerhalb der eckigen Klammern, aber vergewissern Sie sich, dass sie hinter dem ^
steht).
Verwenden Sie Wortgrenzen . Beachten Sie, dass der Bereichsquantifizierer {1}
(ein einzelnes \d
nur einer Ziffer entspricht) und die Zeichenklasse []
redundant ist, da sie nur aus einem Zeichen besteht.
Suche nach Wortgrenzen:
%Vor%Wie von den anderen erklärt, wird dies einzelne Ziffern extrahieren, was bedeutet, dass einige Sonderzeichen nicht wie "." in einer IP-Adresse. Siehe dazu F.J und Mike Brants Antwort (en).
Es hängt wirklich davon ab, wo die Zahlen erscheinen können und ob es Ihnen interessiert, ob sie neben anderen Zeichen stehen (wie .
am Ende eines Satzes). Zumindest würde ich Wortgrenzen verwenden, so dass Sie Zahlen am Anfang und Ende der Eingabezeichenfolge erhalten können:
Aber Sie könnten die Interpunktion am Ende wie folgt betrachten:
%Vor%Tags und Links regex