2013-10-30 12 views
5

Ho trovato diverse domande che riguardano questo, ma nessuno che sembra risponderle. Sto cercando di creare un Regex che mi consenta di identificare i nomi appropriati in un gruppo di testo.Regex trova nomi o frasi appropriate che NON sono la prima parola in una frase

Sto definendo un nome corretto come segue: Una parola o un gruppo di parole che iniziano con una lettera maiuscola, sono più lunghe di 1 cifra (per escludere cose come I, A, ecc.) E NON sono la prima parola di una nuova frase

Così, nel testo che segue

"Susan Dow soggiornato presso l'Holiday Inn su Giovedi. Ha incontrato Tom e Shirley Temple al bar dove hanno ordinato Green Eggs and Ham"

vorrei il seguito tornato

Holiday Inn Giovedi Tom Shirley Temple Green Eggs Ham

In questo momento, [A-Z]{1,1}[a-z]*([\s][A-Z]{1,1}[a-z]*)* è quello che ho, ma sta restituendo Susan Dow e lei in aggiunta a quelli sopra elencati. Come posso far funzionare la mia ricerca .?

risposta

3

È possibile utilizzare:

(?<!^|\. |\. )[A-Z][a-z]+ 

per questo rubular

Aggiornamento: Integrato i due sguardi negativi con alternanza. Inoltre ha aggiunto il controllo per due spazi tra le frasi. Tieni presente che gli operatori di ripetizione non possono essere utilizzati in lookbehinds negativi per le note in http://www.regular-expressions.info/lookaround.html

Problemi correlati