Có cách nào dễ dàng để phù hợp với tất cả các dấu chấm câu ngoại trừ thời gian và dấu gạch dưới, trong một regex C#? Hy vọng để làm điều đó mà không liệt kê tất cả các dấu chấm câu duy nhất.Regex: Khớp bất kỳ ký tự dấu câu nào ngoại trừ. và _
Trả lời
Sử dụng Regex Trừ
[\p{P}-[._]]
Đây là liên kết cho tài liệu .NET Regex (Tôi không chắc liệu các hương vị khác có hỗ trợ nó hay không) ... http://msdn.microsoft.com/en-us/library/ms994330.aspx
Dưới đây là một ví dụ C#
string pattern = @"[\p{P}\p{S}-[._]]"; // added \p{S} to get ^,~ and ` (among others)
string test = @"_""'a:;%^&*~`[email protected]#.,?";
MatchCollection mx = Regex.Matches(test, pattern);
foreach (Match m in mx)
{
Console.WriteLine("{0}: {1} {2}", m.Value, m.Index, m.Length);
}
Giải thích Các mô hình là một phép trừ lớp nhân vật. Nó bắt đầu với một lớp nhân vật tiêu chuẩn như [\ p {P}] và sau đó thêm một lớp nhân vật trừ như - [._] mà nói để loại bỏ. và _. Phép trừ được đặt bên trong [] sau ruột chuẩn.
Bạn có thể có thể sử dụng một lớp nhân vật phủ nhận như thế này:
[^0-9A-Za-z._\s]
Điều này bao gồm tất cả các nhân vật trừ những liệt kê. Bạn có thể cần loại trừ nhiều ký tự hơn (chẳng hạn như các ký tự điều khiển), tùy thuộc vào các yêu cầu tối thượng của bạn.
Điều đó cũng sẽ nhận được khoảng trống –
Được rồi, thêm dấu cách vào danh sách loại trừ. –
Được rồi, nhưng tôi muốn một nửa đại diện của bạn cho câu hỏi này ... –
Đây là điều đơn giản hơn một chút. Không phải từ hoặc khoảng trắng (trong đó các từ bao gồm A-Za-z0-9 AND gạch dưới).
[^\w\s.]
Hoạt động trong Ruby! – zanbri
Câu trả lời cho đến nay không tôn trọng TẤT CẢ dấu chấm câu. Điều này sẽ làm việc:
(?![\._])\p{P}
(Giải thích: lookahead Negative để đảm bảo rằng không .
cũng không _
được kết hợp, sau đó kết hợp bất kỳ ký tự unicode dấu chấm câu.)
Điều đó dường như không khớp với ^, ~ hoặc '; tôi có thể kiểm tra nó sai hay không. NET không xem chúng là dấu chấm câu? – Smashery
@Smashery Đây là dấu trọng âm, bạn sẽ không bao giờ sử dụng dấu chấm câu đó bằng ngôn ngữ tiếng Anh. – steinar
Cảm ơn rất nhiều! Tôi quyết định chấp nhận câu trả lời của Les, bởi vì tôi thấy Regex Subtraction dễ hiểu hơn về mặt khái niệm; do đó tôi có nhiều khả năng nhớ nó hơn; nhưng 1 - cảm ơn vì đã dạy tôi vài điều mới mẻ!(Ước tôi có thể chấp nhận hai câu trả lời) – Smashery
- 1. Sử dụng regex để khớp với bất kỳ ký tự nào trừ =
- 2. Regex để khớp với bất kỳ ký tự không phải từ nào, nhưng trừ
- 3. Regex; loại trừ tất cả dấu chấm câu ngoại trừ
- 4. PHP Regex Bất kỳ ký tự nào
- 5. Regex để khớp tất cả các ký tự ngoại trừ chữ cái và số
- 6. Mẫu Regex khớp với bất kỳ số nào bao gồm 1-9 ngoại trừ 2
- 7. Regex khớp với bất kỳ thứ gì ngoại trừ tất cả khoảng trắng
- 8. ANTLR phù hợp với bất kỳ ký tự trừ
- 9. Regex - Đối sánh bất kỳ chuỗi ký tự nào ngoại trừ một từ cụ thể trong URL
- 10. tại sao dấu chấm trong dấu ngoặc vuông không khớp với bất kỳ ký tự nào?
- 11. Biểu thức chính quy - Đối sánh bất kỳ ký tự nào ngoại trừ +, chuỗi trống cũng phải khớp với
- 12. Regex để khớp với bất kỳ ký tự nào bao gồm các dòng mới
- 13. NSPredicate khớp với bất kỳ ký tự nào
- 14. Java regex khớp với tất cả các ký tự ngoại trừ
- 15. Regex đơn giản, khớp với bất kỳ chuỗi nào có ít nhất một dấu gạch ngang
- 16. Java RegEx khớp với bất kỳ thứ gì BUT chuỗi ký tự 'NIL' hoặc 'nil'
- 17. Làm cách nào để khớp các ký tự có dấu với một regex bằng Python?
- 18. Mẫu Java để khớp với bất kỳ chuỗi ký tự nào trừ một danh sách nhất định
- 19. C# Regex khớp với bất kỳ thứ gì bên trong dấu ngoặc đơn
- 20. RegEx trong văn bản tuyệt vời: So khớp bất kỳ ký tự nào, bao gồm cả dòng mới?
- 21. Regex cho các ký tự từ trong bất kỳ ngôn ngữ nào
- 22. Xóa tất cả các ký tự ngoại trừ chữ và số và dấu cách bằng javascript
- 23. Làm cách nào để loại trừ một ký tự khỏi nhóm regex?
- 24. Làm thế nào để phù hợp với regex tất cả các ký tự đặc biệt ngoại trừ "-" trong PHP?
- 25. Python: bắt đầu với bất kỳ ký tự alpha nào
- 26. regex để khớp với một ký tự đơn là bất kỳ thứ gì ngoài một không gian
- 27. biểu thức chính quy: Bất kỳ nhân vật ngoại trừ chuỗi
- 28. Xác định biểu thức chính quy JavaScript khớp với bất kỳ thứ gì ngoại trừ một chuỗi cụ thể
- 29. Regex để tìm các ký tự đặc biệt trong chuỗi có một số ngoại lệ
- 30. Xóa các ký tự không phải là số, trừ các dấu phẩy, dấu phẩy và '$'?
Điều đó dường như không khớp với ^, ~ hoặc '; tôi có thể kiểm tra nó sai hay không. NET không xem chúng là dấu chấm câu? – Smashery
Nếu bạn thả - [._], thì \ p {P} không khớp với chúng. – Les
Vì vậy, .NET không coi chúng là dấu chấm câu? – Smashery