Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Multiple regex options with C# Regex

Tags:

c#

.net

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);
like image 668
user194076 Avatar asked Nov 15 '11 20:11

user194076


5 Answers

Use bitwise OR (|)

Regex.Replace("aa cc bbbb",
                "aa cc",
                "",
                RegexOptions.IgnoreCase | RegexOptions.IgnorePatterWhitespace); 
like image 151
amit_g Avatar answered Nov 17 '22 10:11

amit_g


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.

like image 29
FailedDev Avatar answered Nov 17 '22 11:11

FailedDev


According to MSDN:

A bitwise OR combination of RegexOption enumeration values.

So just use OPT_A | OPT_B

like image 8
Chris Eberle Avatar answered Nov 17 '22 10:11

Chris Eberle


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

For example...

RegexOptions.Compiled | RegexOptions.IgnoreCase
like image 3
Angelo Avatar answered Nov 17 '22 12:11

Angelo


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();
like image 2
Joe Avatar answered Nov 17 '22 11:11

Joe