2010-03-03 35 views
5

tiếng Anh, tất nhiên, là không có trí tuệ cho regex bởi vì đó là những gì nó được phát triển trong/cho:Cụm từ thông dụng có thể hoạt động với các ngôn ngữ khác nhau không?

biểu thức thông thường có thể hiểu được bộ ký tự này?

Pháp có một số ký tự có dấu trọng âm mà tôi không chắc chắn về cách đối sánh - tức là è và e đều được xem là ký tự từ bằng regex?

Biểu thức Les régulières peuvent comprendre ce jeu de caractères?

Tiếng Nhật không chứa những gì tôi biết là ký tự từ regex để khớp.

正規 表現 は, こ の 文字 を 理解 で き, 設定?

+0

Tôi nghĩ rằng điều này cũng có thể phụ thuộc rất nhiều vào nền tảng mà động cơ regex đang chạy, bạn có lưu ý không? – Lazarus

+0

"Regex" hoặc "biểu thức chính quy", là một khái niệm được xác định cho bất kỳ bộ sưu tập biểu tượng nào bạn có thể muốn gọi một bảng chữ cái. Trong thực tế, có rất nhiều công cụ biểu thức chính quy (tất cả những gì tôi đã thấy thêm các khả năng khác), một số trong đó có lẽ xử lý Unicode của một số hương vị tốt và một số trong đó có lẽ không. Tóm lại, đây là một câu hỏi phụ thuộc vào nền tảng, và để có được một phản ứng hữu ích, bạn sẽ cần phải cho chúng tôi biết bạn đang nói về công cụ regex nào. –

Trả lời

6

Câu trả lời ngắn: .

Cụ thể hơn, tùy thuộc vào công cụ regex của bạn hỗ trợ các kết quả khớp unicode (như được mô tả here).

trận đấu như vậy có thể làm phức tạp biểu thức thông thường của bạn vô cùng, vì vậy tôi có thể khuyên bạn nên đọc this unicode regex hướng dẫn (cũng lưu ý rằng việc triển khai unicode mình có thể khá một mớ hỗn độn, do đó bạn cũng có thể được hưởng lợi từ việc đọc Joel Spolsky của article về hoạt động bên trong của nhân vật bộ).

+2

Lưu ý rằng Unicode không phải là mớ hỗn độn. Đó là tất cả những nỗ lực mà đến trước đó làm cho toàn bộ vấn đề lộn xộn. –

+1

Theo định nghĩa trong bài viết đó, Unicode không thể là một mớ hỗn độn: triển khai có thể được. – Tom

1

Theo như tôi biết, không có bất kỳ mô hình cụ thể mà bạn có thể sử dụng tức là [a-zA-Z] để phù hợp với "è", nhưng bạn luôn có thể kết hợp chúng một cách riêng biệt, tức là [a-zA-Zè 正]

Rõ ràng là có thể làm cho regexp của bạn to lớn, nhưng bạn luôn có thể kiểm soát điều này bằng cách thêm chuỗi của bạn vào biến và chỉ truyền các biến thành các biểu thức.

0

nó không phải về biểu thức chính quy mà là về khung thực thi nó. java và .net tôi nghĩ là rất tốt trong việc xử lý unicode. vì vậy "è và e cả hai được coi là ký tự từ bởi regex" là sự thật.

0

Tùy thuộc vào việc triển khai và bộ ký tự. Nói chung câu trả lời là "Có", nhưng nó có thể yêu cầu thiết lập bổ sung từ phía bạn.

Trong Perl, ví dụ: ý nghĩa của những thứ như \ w bị thay đổi bởi ngôn ngữ đã chọn (sử dụng ngôn ngữ).

1

Nói chung, regex là nhiều hơn cho văn bản có thể đọc được trên máy có thể đọc được so với văn bản có thể đọc được. Đó là trong nhiều cách một câu trả lời chung chung hơn cho toàn bộ XML với điều regex; regex là do bản chất của nó không có khả năng phân tích cú pháp đúng ngôn ngữ của con người, bởi vì ngôn ngữ phức tạp hơn những gì bạn đang sử dụng để phân tích nó.

Nếu bạn muốn chia nhỏ ngôn ngữ của con người (bao gồm tiếng Anh), bạn sẽ muốn sử dụng một công cụ phân tích ngôn ngữ hoặc thậm chí là AI, không chỉ là các biểu thức thông thường.

0

Điều này SO thread có thể hữu ích. Nó bao gồm các Unicode character classes bạn có thể sử dụng trong một regex (ví dụ: [Ll] là tất cả các chữ thường, bất kể ngôn ngữ).Ví dụ:

+0

Sử dụng trong một regex trong công cụ nào? Perl? Tăng cường? Java? –

+0

6.2L V8. Có loại nào khác? – Tom

0

/[\p{Latin}]/, bao gồm bảng chữ cái Latinh. Bạn có thể nhận được giải thích đầy đủ và tham khảo here.

+0

Đó là một trang web hữu ích, nhưng nó tập trung vào Perl và các động cơ regex tương tự. Nó không phải là phổ quát. –

+0

hmm vâng, tôi không chắc người hỏi sử dụng công cụ nào, nhưng có lẽ nó hữu ích? Động cơ Perl RegEx được sử dụng rộng rãi – casraf

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