Match ein Wort mit regex, die auch Griffe Apostrophe
Muss ich trennen eine Linie von text in Wörter, und verwirrt bin, was regex zu verwenden.
Ich habe überall gesucht für ein regex entspricht einem Wort und fand diejenigen, die ähnlich zu diesem post, aber es will in java (java nicht verarbeiten \ in regelmäßigen strings).
Regulären Ausdruck für die Wörter und diejenigen, die mit einem Apostroph
Habe ich versucht die regex für jede Antwort und bin unsicher, wie die Struktur eines regex für java für diese (ich angenommen, dass alle regex-waren die gleichen). Wenn ersetzen \ durch \ im regex sehe ich die regex nicht funktioniert.
Ich habe auch versucht, suchen Sie es selbst und kommen Sie zu dieser Seite:
http://www.regular-expressions.info/reference.html
Aber ich kann nicht umbrochen, mein Kopf herum regex-fortgeschrittene Techniken.
Bin ich mit String.split(regex, string hier) zu trennen, mein string.
ein Beispiel ist, wenn ich die folgenden:
"Ich mag zu Essen, aber ich weiß nicht, wie zu Essen, das Essen für alle, oder Sie werden verhungern."
Ich möchte match:
I
like
to
eat
but
I
don't
like
to
eat
everyone's
food
or
they'll
starve
Ich will auch nicht zu passen " oder "" oder ""oder". " oder andere Permutationen.
Mein Trennzeichen Bedingungen sollten ähnlich sein:
[entsprechen alle Wortzeichen][ebenfalls mit einem Apostroph, wenn es vorangestellt ist ein Wort-Zeichen und dann mit Wort-Zeichen nach, wenn es irgendwelche]
Was ich habe ist nur eine einfache regex-matches Worte [\w], aber ich bin nicht sicher, wie lookahead oder Blick hinter passend das Apostroph und dann die restlichen Worte.
- duplizieren: stackoverflow.com/questions/2596893/...
- warum nicht aufgeteilt auf Leerzeichen?
yourString.split("\\s+")
; - Nicht wirklich, er fragt die gleiche Frage aber für eine andere Sprache. (Python 3.x vs Java), die unterschiedliche Antworten haben.
- Es geht um die regex nicht wirklich Java selbst, nicht ?
- Nein, er sagte, er habe versucht, alle Antworten in dieser Frage, aber er fragt, wie man Java-regex-match Wörter mit Apostrophen. Der Weg von Python-und Java-Implementierung Regex unterschiedlich sind, so gibt es leichte Unterschiede zwischen dem, wie die Ausdrücke genannt werden. Wenn jemandes nicht mit beiden Sprachen vertraut, die übersetzung der regex ist zwischen den beiden könnte nicht einfach sein. Zum Beispiel, werden nicht alle Sprachen unterstützt-Look-behinds, so sind die Ausdrücke anders sein würde, von einem zum anderen.
- wenn ich split auf whitespace es nicht herausfiltern Unsinn Dinge wie .. "oder"/? " oder ähnliches. Ich möchte an dieser regex in java, so würde ich annehmen, dass eine java-freundliche regex-Ausdruck wäre eine gute Antwort. Ich weiß, meine Frage ist sehr ähnlich wie der andere, aber dies ist für java, und ich wollte nicht zu entgleisen seine Frage, indem er eine meiner eigenen in den Kommentaren.
- ja du hast Recht, regex kann unterschiedlich implementiert in Java und Python. Ich fügte hinzu, eine Antwort mit einem regulären Ausdruck extrahiert aus dem oben verlinkten Seite. Es scheint zu funktionieren wie OP will.
"\\w+('\\w+)*'?"
?- Der regex "\\w+('\\w+)*'?" scheint schneiden Sie alle Wörter, außer den Satzzeichen und so. Ich gab es den Satz "Hallo, Welt! Essen Sie nicht, jemanden Sandwich. Völker'." und es gab(getrennt durch -): ""-", "-"! "-" "-" "-" "-". "-"." Dies scheint, wie es eine Auswahl aus delimitters richtig, aber wie bekomme ich es, um Worte?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Mithilfe Antwort-aus
WhirlWind
auf der Seite angegeben, ist in meinem Kommentar können Sie Folgendes tun:Gedruckt:
Finden Sie ein Beispiel hier: http://ideone.com/pVOmSK
[^a-zA-Z0-9']+
bedeutet, dass es split auf alles (wiederholt) außer alphanumerische Zeichen und Apostroph, aber es wird nicht geteilt, etwas, dass mehrere Apostrophe in es. Wenn es in Ordnung ist, Sie dann mit ihm zu gehen."Hey y'all, use T-Mobile & 23andme.com in the U.K.! Thanks.".match(/[\w'-.]+\w|[\w'-]+\s*/g)
Folgende regex scheint zur Deckung Ihres Beispiel-Zeichenfolge korrekt. Aber es doesn ' T decken Sie das Szenario für das Apostroph.
Java-Code:
Wenn ich das richtig verstehe, wird das Apostroph allein überlassen werden sollte, solange er nach einem Wort-Zeichen. Das nächste regex sollte sich auf die oben genannten plus den speziellen Fall für das Apostroph.
Java-Code:
Wenn ich das zweite regex auf den string:
Hey there! Don't eat 'the mystery meat'.
Bekomme ich folgende Worte in meinem string-array:
"Hey y'all, use T-Mobile & 23andme.com in the U.K.! Thanks.".match(/[\w'-.]+\w|[\w'-]+\s*/g)