2010-09-05 12 views

Antwort

11

Wenn Sie das letzte Wort in einer Zeichenfolge finden müssen, dann tut dies:

m/ 
    (\w+)  (?# Match a word, store its value into pattern memory) 

    [.!?]?  (?# Some strings might hold a sentence. If so, this) 
       (?# component will match zero or one punctuation) 
       (?# characters) 

    \s*  (?# Match trailing whitespace using the * because there) 
       (?# might not be any) 

    $   (?# Anchor the match to the end of the string) 
/x; 

Nach dieser Aussage, 1 $ das letzte Wort in der Zeichenfolge halten. Möglicherweise müssen Sie die Zeichenklasse [.!?] Erweitern, indem Sie weitere Interpunktionszeichen hinzufügen.

in PHP:

<?php 

$str = 'MiloCold is Neat'; 
$str_Pattern = '/[^ ]*$/'; 

preg_match($str_Pattern, $str, $results); 

// Prints "Neat", but you can just assign it to a variable. 
print $results[0]; 

?> 
+0

gibt es eine Möglichkeit, es zu tun, so dass ich nur einen regulären Ausdruck wie kompakt es in einem verwenden? Weil ich eine Funktion habe, die ich benutze, und ich kann nicht den regulären Ausdruck zu arbeiten, es ist Punkt und Leerräume und nichts anderes – Sam

3

Im Allgemeinen kann man nicht richtig englischen Text mit regulären Ausdrücken analysiert.

Das Beste, was Sie tun können, ist nach einer Interpunktion zu suchen, die normalerweise einen Satz beendet, aber das ist leider keine Garantie. Zum Beispiel der Text Mr. Bloggs ist hier. Willst du mit ihm reden? enthält zwei Punkte, die unterschiedliche Bedeutungen haben. Es gibt keine Möglichkeit für einen regulären Ausdruck, zwischen den beiden Verwendungen des Zeitraums zu unterscheiden.

Ich würde stattdessen vorschlagen, dass Sie eine natürliche Sprache analysieren Bibliothek. Zum Beispiel hat die Stanford Parser an keine Probleme all den obigen Text in die beiden Sätze richtig Parsen:

 
Mr./NNP Bloggs/NNP is/VBZ here/RB ./. 
Do/VBP you/PRP want/VB to/TO talk/VB to/TO him/PRP ?/. 

Es gibt viele andere frei verfügbar NLP-Bibliotheken, die Sie auch nutzen könnten, bin befürwortende ich nicht, dass ein Produkt in Insbesondere - es ist nur ein Beispiel, um zu zeigen, dass es möglich ist, Text in Sätze mit einer ziemlich hohen Zuverlässigkeit zu parsen. Beachten Sie jedoch, dass selbst eine Parsing-Bibliothek für natürliche Sprachen immer noch einen Fehler macht - das korrekte Parsen menschlicher Sprachen ist schwierig.

+0

ja ich wollte es vor jedem Punkt, aber Sie haben Recht, es würde wählen up Herr. was ich nicht will – Sam

+1

Das Originalplakat hat kein Englisch angegeben. In einigen Sprachen werden keine Leerzeichen zwischen Wörtern eingefügt. Daher frage ich mich, ob ein Programm das letzte Wort richtig finden könnte. –

+0

Ja, ich habe nie daran gedacht, ich nehme an, dass es nicht so wäre – Sam

Verwandte Themen