2013-06-06 23 views
5

Aşağıdaki metni kullanıyorum = "superilustrado e de capa dura?" Ve metindeki sözcükler arasındaki tüm boşlukları bulmak istiyorum. Aşağıdaki ifadeyi kullanıyorum = [\\p{L}[:punct:]][[:space:]][\\p{L}[:punct:]]. İfade iyi çalışıyor ama "e de" arasındaki boşluğu bulabilir. Düzenli ifademde sorun olanı bilen var mı?Uzayları Bulmak için Normal İfade

cevap

3

Belki de izlemiyorum, ancak neden sadece [] kullanıyorsunuz?

13

Mekanlar, normal ifadenize bir boşluk karakteri koyarak kolayca bulunabilir.

Boşluk \s ile bulunabilir.

Kelimeler arasında boşluk bulmak istiyorsanız, \b sözcük sınır işaretini kullanın.

Bu iki kelime arasında tek bir boşluk eşleşir:.

"\b \b" 

(eşleme başarısız nedeni \\p{L} bir maçta karakteri içerdiğini olan e tek karakter olduğundan, tarafından yemiş olur o sıfır genişlikli maçı olduğu için önceki maç ve e sonra alanı için uyumlu olamaz. \b bu sorunu ortadan kaldırır.)

+0

sayesinde senin açıklaman mantıklı. Ancak, ifadeyi noktalama işareti olan bir metinle birlikte kullandığımda, "JA imgenin de dahil olduğu düşünün, diğer şeyleri tamamlayın, superilustrado e de capa dura? Então, en iyi ve en iyi spikeri destekler!" ilustrado por ele mesmo! ", tüm alanları bulamıyor. Noktalama işaretiyle ilgilenen başka bir ifade eklemenin bir yolu var mı? – Aldo

+1

@Aldo, neden sadece dizideki tüm alanları aramıyoruz? Eşleştirmek istemediğiniz başka alanlar var mı? –

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;