Karl, như bạn đã chỉ ra đúng, bất kỳ từ nào trong bất kỳ ngôn ngữ nào cũng có thể là một thẻ bắt đầu bằng # hợp lệ (miễn là đáp ứng một số tiêu chí cơ bản). Như những gì bạn đang yêu cầu là một danh sách các ký tự từ quốc tế hợp lệ.Tôi chắc rằng ai đó đã biên soạn danh sách đó ở đâu đó, nhưng việc sử dụng nó sẽ không phải là cách tiếp cận hiệu quả nhất để đạt được mục tiêu ban đầu của bạn: đảm bảo rằng thẻ bắt đầu bằng # đã cho hợp lệ cho twitter.
Tôi tin rằng, những gì bạn đang tìm kiếm là cụm từ thông dụng có thể khớp với tất cả các ký tự từ trong phạm vi Unicode. Biểu hiện như vậy sẽ không phụ thuộc vào ngôn ngữ của bạn và sẽ khớp với tất cả các ký tự trong kiểu chữ hiện đại có thể xuất hiện như một phần của từ.
Bạn không chỉ định ngôn ngữ bạn đang viết ứng dụng của mình, vì vậy, tôi không thể giúp bạn thực hiện ngôn ngữ cụ thể. Tuy nhiên, cách tiếp cận cơ bản sẽ như sau:
Kiểm tra nếu một trong các biểu thức khung hoặc các lớp nhân vật đã hỗ trợ ký tự Unicode trong khoảng trong ngôn ngữ của bạn. Nếu có thì hãy sử dụng chúng.
Kiểm tra xem có công cụ sửa đổi regex có thể cho phép phạm vi ký tự Unicode hỗ trợ cho ngôn ngữ của bạn hay không.
Hầu hết các ngôn ngữ hiện đại thực hiện biểu thức thông thường theo một cách khá giống nhau và rất nhiều trong số họ mượn rất nhiều từ Perl, vì vậy tôi hy vọng sau hai ví dụ sẽ đưa bạn đi đúng hướng:
Perl:
Sử dụng POSIX khung (ví dụ: [[:alpha:]]
, [[:allnum:]]
, [[:digit:]]
, vv) khi họ cung cấp cho bạn kiểm soát tốt hơn các ký tự bạn muốn để phù hợp, so với các lớp nhân vật (ví dụ: \w
).
Sử dụng /u
công cụ sửa đổi để bật hỗ trợ Unicode khi khớp mẫu. Theo công cụ sửa đổi này, nền tảng ASCII có hiệu quả trở thành một nền tảng Unicode; và do đó, ví dụ: \w
sẽ khớp với bất kỳ ký tự nào trong số hơn 100.000 ký tự trong Unicode.
tài liệu Xem Perl để biết thêm:
Ruby:
Sử dụng POSIX khung như họ bao gồm các ký tự ASCII. Ví dụ,/\ d/chỉ khớp các chữ số thập phân ASCII (0-9); trong khi/[[: chữ số:]]/khớp với bất kỳ ký tự nào trong thể loại Unicode Nd.
tài liệu
Xem Ruby cho biết thêm:
Ví dụ:
Cho một danh sách các hashtags, regex sau đây sẽ phù hợp với tất cả các hashtags bắt đầu bằng một từ ký tự (inc.các ký tự từ quốc tế) và được theo sau bởi một ký tự từ khác, một số hoặc dấu gạch dưới:
m/^#[[:alpha:]][[:alnum:]_]+$/u # Perl
/^#[[:alpha:]][[:alnum:]_]+$/ # Ruby
Tôi có thể xác nhận cho cyrillic bạn có thể dễ dàng tìm thấy nhiều mẩu tin bằng tiếng Nga như thế này https://twitter.com/search?q=%23%D0%BF%D1%80%D0%B8%D0% B2% D0% B5% D1% 82 & src = typd – Igor