user194076
user194076

Reputation: 9017

Multiple regex options with C# Regex

Assume I have this:

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

But I also need to ignore white-spaces. So, I found an option IgnorePatternWhitespace, but how can I add several options to one regex.Replace?
Something like:

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

Update:
Thanks for answers but this option does not seem to work: here's a test example:

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

Upvotes: 23

Views: 34513

Answers (5)

amit_g
amit_g

Reputation: 31250

Use bitwise OR (|)

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

Upvotes: 90

Joe
Joe

Reputation: 82584

IgnorePatternWhitespace
Eliminates unescaped white space from the pattern and enables comments marked with #. However, the IgnorePatternWhitespace value does not affect or eliminate white space in character classes.

so:

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

Upvotes: 2

FailedDev
FailedDev

Reputation: 26930

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

Use the | operator.

Edit :

You got it completely wrong. RegexOption.IgnorePatterWhitespace ignores the whitespace in the regex so that you can do :

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

You however think that ingoring whitespace makes "aa cc bbbb" into "aaccbbbb" which is thankfully wrong.

Upvotes: 13

Angelo
Angelo

Reputation: 3115

You can have as many RegexOptions as you like, just "OR" them with "|".

For example...

RegexOptions.Compiled | RegexOptions.IgnoreCase

Upvotes: 3

Chris Eberle
Chris Eberle

Reputation: 48775

According to MSDN:

A bitwise OR combination of RegexOption enumeration values.

So just use OPT_A | OPT_B

Upvotes: 8

Related Questions