2015-08-19 15 views
5

ho una stringa "Io sono un robot, sono stato chiamato 456/m (4). Dimenticate il nome (che non significa nulla)"javascript regexp per il rilevamento limite di parola con parentesi

Ora vorrei come per estrarre tutte le parole da questa stringa per questo io uso l'espressione regolare:

/\b[\w\S]+\b/g 

mi restituisce tutte le parole nella stringa eccezione del fatto che c'è una parola "456/(4" invece di "456/(4) ". Capisco che è dovuto al fatto che si tratta di un limite di parole, ma c'è un modo per dire che non è un limite di parole legali dal momento che non c'era una parentesi" legale "iniziale?

risposta

4

L'ho reso ancora migliore ora. Fa esattamente quello che vuoi.

\b(?>\([\w\/]+\)|[\w\/])+ 

Regex101

Se volete una versione che è javascript amichevole:

((?:(?=(\([\w\/]+\)|[\w\/]))\2)+) 

Basta utilizzare gruppo di cattura # 1 qui.

Regex101

+0

Mi dispiace, ma questo doesnt sembra funzionare per dire "esposti a 360J/m (2) e 456/m (4)" Ho beleive la mia domanda è più generico che questa soluzione quick fix voi proposto. – suzee

+0

@suzee L'ho appena aggiornato per funzionare meglio per te. Ero occupato quindi non potevo tornare prima. Scusate! – d0nut

+0

@suzee l'ho migliorato ancora di più. ora prenderà solo la parentesi se è parte della parola. – d0nut

Problemi correlati