2013-06-06 16 views
5

Ho il seguente testo = "superilustrado e de capa dura?", E voglio trovare tutti gli spazi tra le parole nel testo. Sto usando la seguente espressione = [\\p{L}[:punct:]][[:space:]][\\p{L}[:punct:]]. L'espressione funziona bene ma può trovare lo spazio tra "e de". Qualcuno sa qual è il problema con la mia espressione regolare?Espressione regolare per trovare spazi

risposta

3

Forse non sto monitorando, ma perché non usare solo []?

13

Gli spazi possono essere trovati semplicemente inserendo un carattere di spazio nella regex.

Spazio vuoto con \s.

Se si desidera trovare spazi bianchi tra le parole, utilizzare il contrassegno del limite di parola \b.

Ciò corrisponde a un singolo spazio tra due parole:.

"\b \b" 

(Il motivo per il tuo partner non è riuscito è che \\p{L} include il personaggio in una partita, perché e è solo un personaggio, viene mangiato dal precedente partita e non possono essere abbinati per lo spazio dopo e. \b evita questo problema perché è un match di ampiezza zero.)

+0

Grazie, la tua spiegazione ha un senso. Tuttavia, quando uso l'espressione con un testo che ha segni di punteggiatura, "Immagina che tu stia pubblicando un film di successo, superilustrado e de capa dura?", Preparando una festa per il miglior amico! ilustrado por ele mesmo! ", non trova tutti gli spazi. C'è un modo per includere un'altra espressione che si prenda cura della punteggiatura? – Aldo

+1

@Aldo, perché non cercare tutti gli spazi nella stringa? Ci sono altri spazi che non vuoi abbinare? –

0
// Setup 
var testString = "How many spaces are there in this sentence?"; 

// Only change code below this line. 

var expression = /\s+/g; // Change this line 

// Only change code above this line 

// This code counts the matches of expression in testString 
var spaceCount = testString.match(expression).length; 
Problemi correlati