2010-04-12 35 views
5

Tôi cần biểu thức chính quy .Net khớp với bất kỳ thông tin nào KHÁC so với kết hợp chuỗi chính xác được chỉ định. Vì vậy, về cơ bản:.Net Biểu thức chính quy - cách thực hiện loại trừ đối sánh chính xác trên chuỗi đầy đủ?

^Index$ 

... là loại trừ duy nhất mà tôi quan tâm. Các chuỗi có thể bắt đầu bằng, kết thúc bằng hoặc chứa "Chỉ mục", nhưng không khớp chính xác. Bộ não của tôi dường như không hoạt động ngày hôm nay và tôi không làm việc này.

EDIT

Câu trả lời phải được thông qua các mô hình riêng của mình, như tôi đi qua một cuộc tranh cãi với một thư viện của bên thứ ba và không có kiểm soát đối với quá trình khác hơn là thông qua mô hình Regex.

+0

bạn có thể cung cấp thêm thông tin? Tức là, tại sao biểu thức thông thường? Bạn có thể đạt được điều này đơn giản hơn với một 'myString! =" Index "' so sánh, và sau đó bạn không cần phải lo lắng về regexes. – alastairs

+0

Tôi phải vượt qua một đối số cho một cái gì đó mà có một biểu thức chính quy để phù hợp với cái gì khác. Tôi không có bất kỳ sự kiểm soát nào về việc đó hoạt động khác hơn là "phù hợp hoặc không phù hợp theo regex này" –

Trả lời

5

Điều đó sẽ làm các trick:

^(?!Index$) 
+0

Vâng, điều này hoạt động tốt hơn. Bây giờ tôi thấy rõ điều đó! –

+0

Tuyệt vời! :-) - – YOU

+0

Cảm ơn Nathan và S.Mark! – Lucero

4

Nếu Regex là Phải,

Match match = Regex.Match(input, @"^Index$"); 

if (!match.Success){ 
    //do something 
} 

Và với cách khủng khiếp

Match match = Regex.Match(input, @"^(.*(?<!Index)|(?!Index).*)$"); 

if (match.Success){ 
    //do something 
} 

Lưu ý: thứ hai không được thử nghiệm, và động cơ regex nhu cầu hỗ trợ cái nhìn đầy đủ trước và nhìn về phía sau

+0

Tác phẩm thứ hai hoạt động, Cảm ơn! –

+0

Có một cách đơn giản và nhanh hơn thứ hai, xem câu trả lời của tôi. – Lucero

+0

Vâng, tuyệt đối! – YOU

0

Điều gì về if (!r.Match("^Index$").Success) ...?

+0

Không, nó phải có cú pháp biểu thức chính quy. Kiểm soát duy nhất tôi có trên những gì tôi đang làm ở đây là thông qua các mô hình chính nó. –

0

bạn có thể kiểm tra !regex.Match.Success

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