2012-01-28 32 views
19

Khi tôi thấm một đối tượng regex với một miền địa phương cụ thể, nó ảnh hưởng đến hành vi khớp như thế nào? Nó có ảnh hưởng đến sự đối chiếu hay bất cứ thứ gì khác không? Tôi dường như không tìm được lời giải thích nào cả.Hành vi địa phương cụ thể trong thư viện regex?

+0

Xem thêm http://stackoverflow.com/q/10540305/83805 –

+0

@DonStewart: Tôi chỉ quan tâm đến C++ cụ thể. Hành vi cụ thể của miền địa phương không nhất thiết giống nhau ở mọi nơi tôi tưởng tượng. –

+1

Locale ảnh hưởng đến các công cụ regex tuân thủ POSIX, ít nhất là điểm khởi đầu cho hầu hết các thư viện regex ngoài kia. –

Trả lời

42

Nó ảnh hưởng đến ít nhất như sau:

  • Collation: regex [a-f] thấm nhuần một miền địa phương Pháp phải phù hợp với nhân vật é.
  • Tương tự, \w trong một miền địa phương của Phần Lan phải phù hợp với một nhân vật (nhưng [a-z] nên không, như là, một và ö đối chiếu sau khi z ở Phần Lan. Trong tiếng Đức, tuy nhiên, [a-z] phải phù hợp với ä.)
  • Trong một miền địa phương tương thích với Unicode, thuật toán Unicode equivalence nên được sử dụng, do đó các hình thức sáng tác của một ký tự khớp với dạng bị phân tách và ngược lại.
  • Với hương vị regex tương thích POSIX (cơ bản, mở rộng, awk, grep và egrep), POSIX character classes phải là địa phương nhận thức: [=e=] phải khớp với é bằng ngôn ngữ của Pháp chứ không phải bằng ngôn ngữ tiếng Anh.
3

Trên ngôn ngữ Tây Ban Nha, xin lưu ý rằng "ch" và "ll" không được coi là các chữ cái trong bảng chữ cái nữa, vì điều này đã được thay đổi bởi các thực thể có liên quan. Tôi không thể tìm ra chính xác ngày, nhưng nó ngay bây giờ "ch" và "sẽ" là hai chữ:

http://en.wikipedia.org/wiki/Ll

Tôi nghĩ rằng việc triển khai hiện nay phản ánh thực tế là.

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