web-dev-qa-db-fra.com

Expression régulière pour trouver des espaces

J'ai le texte suivant = "superilustrado e de capa dura?", Et je veux trouver tous les espaces entre les mots du texte. J'utilise l'expression suivante = [\\p{L}[:punct:]][[:space:]][\\p{L}[:punct:]]. L'expression fonctionne bien mais elle peut trouver l'espace entre le "e de". Est-ce que quelqu'un sait quel est le problème avec mon expression régulière?

6
Aldo

Les espaces peuvent être trouvés simplement en mettant un caractère d'espace dans votre expression rationnelle.

Les espaces peuvent être trouvés avec \s.

Si vous souhaitez trouver des espaces entre les mots, utilisez le marqueur de limite de \b Word.

Cela correspondrait à un seul espace entre deux mots:

"\b \b"

(La raison de votre correspondance est que \\p{L} inclut le caractère dans une correspondance. Étant donné que e n’est qu’un caractère, il est mangé par la correspondance précédente et ne peut pas être apparié pour l’espace après e. \b évite ce problème car il est un match nul en largeur.)

15
user1919238

Peut-être que je ne suis pas en train de suivre, mais pourquoi ne pas simplement utiliser []?

4
Captain Skyhawk
// 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;
0
ziaullahzia