2011-05-14 37 views
7

Tôi có một số tài liệu đã trải qua chuyển đổi OCR từ PDF sang HTML. Do đó, họ có nhiều dấu chấm câu ngẫu nhiên trong đó công cụ chuyển đổi bị hỏng (tức là elipses, v.v ...). Chúng cũng chính xác có một nhóm không phải tiếng Anh, nhưng vẫn là các ký tự chữ cái, như é, và các ký tự tiếng Nga, vv ...Có cách nào để phù hợp với bất kỳ ký tự không phải chữ cái Unicode nào không?

Có cách nào để tạo một Regex khớp với bất kỳ ký tự chữ cái unicode nào (từ bảng chữ cái bất kỳ ngôn ngữ nào)? Hoặc một trong đó sẽ chỉ phù hợp với các ký tự không phải chữ cái? Hoặc là một trong những sẽ thực sự hữu ích và tuyệt vời. Tôi đang sử dụng Perl, nếu điều đó thay đổi bất cứ điều gì. Cảm ơn!

Trả lời

19

Kiểm tra các đặc tính ký tự Unicode: http://www.regular-expressions.info/unicode.html#prop. Tôi nghĩ rằng những gì bạn đang tìm kiếm có lẽ là

\p{L} 

sẽ khớp với bất kỳ chữ cái hoặc ideograph nào. Bạn cũng có thể muốn bao gồm các chữ cái có dấu trên chúng, vì vậy bạn có thể làm

\p{L}\p{M}* 

Trong mọi trường hợp, tất cả các loại thuộc tính ký tự khác nhau được chi tiết trong liên kết đầu tiên.

Chỉnh sửa: Bạn cũng có thể muốn xem câu trả lời Stack Overflow này thảo luận xem liệu \ w có khớp với các ký tự unicode hay không. Chúng gợi ý rằng bạn cũng có thể sử dụng \ p {Word} hoặc \ p {Alnum}: Does \w match all alphanumeric characters defined in the Unicode standard?

+2

Trong cùng một cách, bạn có thể sử dụng '\ P' để khớp với ký tự * không * có thuộc tính cụ thể (vì vậy' \ P {L} 'khớp với bất kỳ ký tự không phải chữ nào). –

+0

Tôi có thể sử dụng mã ký tự bỏ qua một số điểm mã không? Giống như \ p {P} bỏ qua dấu chấm và dấu phẩy? Sự phủ nhận điều đó sẽ hoàn hảo đối với tôi. – Eli

2

Tùy thuộc vào ngôn ngữ bạn đang sử dụng, công cụ biểu thức chính quy có thể hoặc không biết Unicode. Nếu có, có thể hoặc không biết mã thông báo thuộc tính \p{}. Nếu có, câu trả lời của bạn là trong Unicode Characters and Properties in Jan Goyvaerts' regex tutorial.

Bạn có thể sử dụng \p{Latin}, nếu được hỗ trợ, để phát hiện mọi thứ (hoặc không, tất nhiên) từ một ngôn ngữ sử dụng bất kỳ khối Unicode Latin nào.

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