2009-05-22 36 views
6

Ngôn ngữ biểu thức chính quy sử dụng \ B để bao gồm A..Z, a..z, 0..9 và _, và \ b được định nghĩa là một ranh giới từ.Cụm từ thông dụng cho từ tiếng Tây Ban Nha là gì?

Làm cách nào để viết cụm từ thông dụng phù hợp với tất cả các từ tiếng Tây Ban Nha hợp lệ, bao gồm các ký tự như: á, í, ó, é, ñ, v.v ...?

Tôi đang sử dụng .NET.

Trả lời

6

Sử dụng ngôn ngữ Tây Ban Nha và làm cho ngôn ngữ nhạy cảm của bạn trở nên nhạy cảm với miền địa phương.

1

Hệ thống regex của bạn phải có thứ gì đó tương đương với số re.L của Python để tạo phụ thuộc vào miền địa phương, do đó ký tự từ và những gì không thay đổi với ngôn ngữ, cũng như "ranh giới từ". Thay vào đó, bạn có yêu cầu một cách để bù đắp cho một số hệ thống regex nhất định không phải là hỗ trợ ngôn ngữ, cố gắng bắt buộc sự cố ...?

1

Điều này phụ thuộc rất nhiều vào ngôn ngữ (và công cụ regex) mà bạn đang sử dụng.

Trong Perl, \w khớp với tất cả các ký tự từ, bất kể ngôn ngữ hoặc bảng chữ cái và một cái gì đó như /\b(\w+)\b/ (có thể) khớp với từ tiếng Tây Ban Nha cũng như từ tiếng Anh hoặc từ tiếng Nga.

Trong các ngôn ngữ sử dụng PCRE, \w (và do đó có thể là \b) KHÔNG khớp với các ký tự Unicode. Bạn có thể sẽ cần phải xây dựng bộ của riêng bạn. Tôi đề nghị một cái gì đó như [\wáéíóúñ] (phù hợp với tất cả các ký tự từ, cộng với các ký tự có dấu bạn muốn), và thư viện PCRE phải được xây dựng sẵn với hỗ trợ Unicode trước khi điều này thậm chí sẽ làm việc.

Nếu bạn đang sử dụng thứ gì đó khác, chúc bạn may mắn. Một số động cơ regex thậm chí không hỗ trợ Unicode.

Các vấn đề liên quan