2011-11-15 30 views
15

Giả sử tôi có điều này:Nhiều tùy chọn regex với C# Regex

Regex.Replace("aa cc bbbb","aa cc","",RegexOptions.IgnoreCase); 

Nhưng tôi cũng cần phải bỏ qua khoảng trắng. Vì vậy, tôi đã tìm thấy một tùy chọn IgnorePatternWhitespace, nhưng làm cách nào tôi có thể thêm một số tùy chọn vào một regex.Đặt lại?
Cái gì như:

Regex.Replace("aa cc bbbb", "aa cc", "", 
    RegexOptions.IgnoreCase + RegexOptions.IgnorePatterWhitespace); 

Cập nhật:
Cám ơn câu trả lời nhưng tùy chọn này dường như không làm việc: đây là một ví dụ kiểm tra:

Regex.Replace("aa cc bbbb", "aacc", "", 
    RegexOptions.IgnoreCase | RegexOptions.IgnorePatterWhitespace); 
+1

"Không có vẻ để làm việc" không phải là rất nhiều thông tin. Những loại hành vi cụ thể là bạn sau khi? –

+0

Điều này đơn giản không có ý nghĩa như một câu hỏi - nhất là khi bạn thấy câu trả lời được chấp nhận là gì, nhưng ngay cả bên ngoài ngữ cảnh đó! –

+0

sử dụng & thay vì +, Regex.Replace ("aa cc bbb", "aa cc", "", RegexOptions.IgnorePatternWhitespace & RegexOptions.IgnoreCase) –

Trả lời

2

IgnorePatternWhitespace
Loại bỏ khoảng trắng unescaped từ mô hình và cho phép bình luận được đánh dấu bằng #. Tuy nhiên, giá trị IgnorePatternWhitespace không ảnh hưởng hoặc loại bỏ khoảng trắng trong các lớp ký tự.

vậy:

string result = Regex.Replace("aa cc bbbb","aa|cc","",RegexOptions.IgnoreCase).Trim(); 
6

Theo MSDN:

Kết hợp bitwise HOẶC của các giá trị liệt kê RegexOption .

Vì vậy, chỉ cần sử dụng OPT_A | OPT_B

+0

Xem cập nhật trong bài đăng của tôi – user194076

9
Regex.Replace("aa cc bbbb","aa cc","",RegexOptions.IgnoreCase | RegexOptions.IgnorePatterWhitespace); 

Sử dụng các nhà điều hành |.

Edit:

Bạn đã nhận nó hoàn toàn sai. RegexOption.IgnorePatterWhitespace bỏ qua các khoảng trắng trong regex để bạn có thể làm:

string pattern = @" 
^    # Beginning of The Line 
\d+    # Match one to n number but at least one.. 
"; 

tuy nhiên Bạn nghĩ rằng ingoring khoảng trắng làm "aa cc bbbb" vào "aaccbbbb" đó là may mắn sai.

+0

Xem cập nhật trong bài đăng của tôi – user194076

+0

@ user194076 Xem câu trả lời được cập nhật. – FailedDev

47

Sử dụng bitwise OR (|)

Regex.Replace("aa cc bbbb", 
       "aa cc", 
       "", 
       RegexOptions.IgnoreCase | RegexOptions.IgnorePatterWhitespace); 
+0

Xem cập nhật trong bài đăng của tôi – user194076

+1

@ user194076, nếu bạn đang mong đợi cụm từ thông dụng "aacc" khớp với "aa cc" trong "aa cc bbbb", bạn đang diễn giải RegexOptions không chính xác. Bạn phải sử dụng một cái gì đó như "aa \ s? Cc" để khớp với điều đó tức là sử dụng \ s? để khớp với khoảng trắng tùy chọn. Regex.Replace ("aa cc bbbb", "aacc", "", RegexOptions.IgnoreCase | –

2

Bạn có thể có nhiều RegexOptions như bạn muốn, chỉ cần "OR" chúng với "|".

Ví dụ ...

RegexOptions.Compiled | RegexOptions.IgnoreCase 
+0

Xem cập nhật trong bài đăng của tôi – user194076