questo è un vecchio thread, ma la gente potrebbe bisogno di questo come ho fatto io. Nessuna delle opere di cui sopra se la vostra frase inizia con uno o più spazi. Ho fatto questo per ottenere la prima parola (non vuoto) nella frase:
(?<=^[\s"']*)(\w+)
Spiegazione:
(?<=^[\s"']*)
lookbehind positiva al fine di cercare l'inizio della stringa, seguita da zero o più spazi o caratteri di punteggiatura (puoi aggiungere altro tra parentesi), ma non includerlo nella partita.
(\w+)
la partita reale della parola, che verrà restituita
le seguenti parole nella frase non corrispondono in quanto non soddisfano il lookbehind.
Che sapore di regex è questo? –
Le parole possono contenere numeri? – endy
'([az] +)', senza distinzione tra maiuscole e minuscole, dovrebbe essere sufficiente per l'inglese "non complicato". Tuttavia, fallirà rapidamente per i caratteri non latini, quindi aggiorna a [usa classi di caratteri Unicode] (http: //stackoverflow.com/a/5005122/166390) come appropriato! Si noti che questo presuppone una regex NFA (come Ruby: D) che "combacerà con la prima cosa che può", ma che funziona a favore qui in quanto non c'è bisogno di ancorare o altrimenti di complessi sguardi. –