2013-06-06 39 views
5

Tôi có văn bản sau = "superilustrado e de capa dura?" Và tôi muốn tìm tất cả các dấu cách giữa các từ trong văn bản. Tôi đang sử dụng cụm từ sau = [\\p{L}[:punct:]][[:space:]][\\p{L}[:punct:]]. Biểu thức hoạt động tốt nhưng nó có thể tìm thấy khoảng trống giữa "e de". Có ai biết vấn đề với biểu hiện chính quy của tôi không?Biểu thức chính quy để tìm các không gian

Trả lời

3

Có lẽ tôi không theo dõi, nhưng tại sao không chỉ sử dụng []?

13

Không gian có thể được tìm thấy đơn giản bằng cách đặt ký tự khoảng trắng trong regex của bạn.

Có thể tìm thấy khoảng trắng với \s.

Nếu bạn muốn tìm khoảng trống giữa các từ, hãy sử dụng dấu mốc ranh giới từ \b.

này sẽ phù hợp với một không gian duy nhất giữa hai từ:.

"\b \b" 

(Sở dĩ trận đấu của bạn thất bại là \\p{L} bao gồm các nhân vật trong một trận đấu Vì e chỉ là một nhân vật, nó được ăn lên bởi trận đấu trước đó và không thể phù hợp cho không gian sau khi e. \b tránh vấn đề này bởi vì nó là một trận đấu zero-chiều rộng.)

+0

cảm ơn, lời giải thích của bạn có ý nghĩa. Tuy nhiên, khi tôi sử dụng các biểu thức với một văn bản có dấu chấm câu, "Já imaginou seu filho công khai um livro de verdade, superilustrado e de capa dura? Sao, vá chuẩn bị một festa de lançamento mệnh bestseller! Seu filho vai ter um livro escrito e ilustrado por ele mesmo! ", nó không tìm thấy tất cả các không gian. Có cách nào để bao gồm một biểu thức khác để xử lý dấu chấm câu không? – Aldo

+1

@Aldo, tại sao không chỉ tìm kiếm tất cả các dấu cách trong chuỗi? Có không gian khác mà bạn không muốn để phù hợp? –

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; 
Các vấn đề liên quan