Wenn Sie nur Zeilen abgleichen möchten, die mit stop use beginnen
^stop
Wenn Sie Zeilen abgleichen möchten, die mit dem Wort stop beginnen, gefolgt von einem Leerzeichen
^stop\s
Oder wenn Sie Zeilen abgleichen möchten, die mit dem Wort stop beginnen, gefolgt von einem Leerzeichen oder einem anderen Nicht-Wort-Zeichen, das Sie verwenden können (sofern Ihr Regex-Geschmack dies zulässt)
^stop\W
Auf der anderen Seite stimmt das Folgende mit einem Wort am Anfang einer Zeichenfolge bei den meisten Regex-Aromen überein (in diesen Aromen entspricht \ w dem Gegenteil von \ W).
^\w
Wenn Ihr Geschmack nicht die Verknüpfung \ w hat, können Sie verwenden
^[a-zA-Z0-9]+
Seien Sie vorsichtig, dass diese zweite Redewendung nur Buchstaben und Zahlen entspricht, überhaupt kein Symbol.
Überprüfen Sie in Ihrem Regex-Flavour-Handbuch, welche Verknüpfungen zulässig sind und was genau zu ihnen passt (und wie sie mit Unicode umgehen).
^stop\b
, was jede Grenze erlauben würde, einschließlich ZeilenendeVersuche dies:
Erläuterung:
Wenn Sie diesen Stopp erzwingen möchten, gefolgt von einem Leerzeichen, können Sie die RegEx folgendermaßen ändern:
Hinweis: Beachten Sie auch, dass nach dem obigen RegEx dem Stoppwort ein Leerzeichen folgen muss! Es würde also nicht mit einer Zeile übereinstimmen, die nur Folgendes enthält: stop
quelle
Wenn Sie nach einem Wortstopp etwas nicht nur am Zeilenanfang abgleichen möchten, können Sie Folgendes verwenden:
\bstop.*\b
- Wort gefolgt von ZeileOder wenn Sie das Wort in der Zeichenfolge Verwendung übereinstimmen
\bstop[a-zA-Z]*
- nur die Worte , mit Stop - StartOder der Zeilenanfang mit Stopp nur
^stop[a-zA-Z]*
für das Wort - nur das erste WortDie ganze Zeile
^stop.*
- nur die erste Zeile der ZeichenfolgeUnd wenn Sie jede Zeichenfolge abgleichen möchten, die mit stop beginnt, einschließlich Zeilenumbrüchen, verwenden Sie:
/^stop.*/s
- mehrzeilige Zeichenfolge, die mit stop beginntquelle
Wie @SharadHolani sagte. Dies stimmt nicht mit jedem Wort überein, das mit " Stopp " beginnt.
. Nur wenn es am Anfang einer Zeile wie " Stop Go " steht. @ Waxo gab die richtige Antwort:
Dieser ist etwas besser, wenn Sie ein Wort finden möchten, das mit " stop " beginnt und nur Buchstaben von A bis Z enthält .
Das würde allen passen
Aber
würde nur (1) bis (3) übereinstimmen, nicht aber (4) & (5)
quelle
Passt zu jedem Stoppwort (Stopp, Stopp, Stopp usw.)
Wenn Sie jedoch nur mit "stop" am Anfang einer Zeichenfolge übereinstimmen möchten
wird tun: D.
quelle
Wenn Sie etwas abgleichen möchten, das mit "Stopp" beginnt, einschließlich "Stopp", "Stopp" und "Stopp", verwenden Sie:
Wenn Sie mit dem Wort stop übereinstimmen möchten, gefolgt von etwas wie in "stop go", "stop this", aber nicht "stop" und nicht "stop", verwenden Sie:
quelle
Ich würde von einem einfachen Ansatz mit regulären Ausdrücken für dieses Problem abraten. Es gibt zu viele Wörter, die Teilzeichenfolgen anderer nicht verwandter Wörter sind, und Sie werden wahrscheinlich verrückt werden, wenn Sie versuchen, die einfacheren Lösungen, die bereits bereitgestellt wurden, zu stark anzupassen.
Sie benötigen mindestens einen naiven Stemming-Algorithmus (probieren Sie den Porter-Stemmer; in den meisten Sprachen ist kostenloser Code verfügbar), um zuerst Text zu verarbeiten. Bewahren Sie diesen verarbeiteten Text und den vorverarbeiteten Text in zwei separaten Arrays mit geteilter Aufteilung auf. Stellen Sie sicher, dass jedes nicht alphabetische Zeichen auch einen eigenen Index in diesem Array erhält. Welche Liste von Wörtern Sie auch filtern, halten Sie sie ebenfalls auf.
Der nächste Schritt wäre, die Array-Indizes zu finden, die mit Ihrer Liste der Stamm-Stopp-Wörter übereinstimmen. Entfernen Sie diese aus dem unverarbeiteten Array und verbinden Sie sie dann wieder mit Leerzeichen.
Dies ist nur geringfügig komplizierter, wird aber ein viel zuverlässigerer Ansatz sein. Wenn Sie Zweifel am Wert eines NLP-orientierten Ansatzes haben, sollten Sie sich mit Clbuttic-Fehlern befassen .
quelle
Wenn das Wort mit "Stopp" beginnen soll, können Sie das folgende Muster verwenden. "^ hör auf. *"
Dies stimmt mit Wörtern überein, die mit stop beginnen, gefolgt von irgendetwas.
quelle
"^stop"
?code
String line = "stopped";
String pattern = "^stop";
Pattern r = Pattern.compile(pattern);
Matcher m = r.matcher(line);
System.out.println(m.find( )); //prints true
System.out.println(line.matches(pattern)); //prints false