473,395 Members | 1,766 Online
Bytes | Software Development & Data Engineering Community
Post Job

Home Posts Topics Members FAQ

Join Bytes to post your question to a community of 473,395 software developers and data experts.

Regex bug ?

Hi,

string test="dit is een test";
bool bMatch = Regex.IsMatch( test, "^([^wi]|[i])*$" );

after executing, the bMatch is false

The pattern is not optimized and seems a little stupid. But for large regex
expressions using smaller strings to build it, the same problem could arise.

First there is a character group which includes all character except 'wi',
but then there's an or with an 'i' character.

So as net result, only the w shouldn't be matched, the input string doesn't
contain a 'w', so it should match.

In perl this matches.

Can anyone conform this is a bug or I'm missing something ?

TIA
Greetings
Nov 15 '05 #1
2 1698
I have seen this problem with alternation before. To get around it, you can
use grouping parentheses for each part of the alternation:

^(([^wi])|([i]))*$

Note that this may change your result if you reference unnamed groups. I
don't know why it works that way, but it definitely appears to be a bug in
..NET regular expressions.

Brian Davis
www.knowdotnet.com


"BMermuys" <bm**************@hotmail.com> wrote in message
news:fs*********************@phobos.telenet-ops.be...
Hi,

string test="dit is een test";
bool bMatch = Regex.IsMatch( test, "^([^wi]|[i])*$" );

after executing, the bMatch is false

The pattern is not optimized and seems a little stupid. But for large regex expressions using smaller strings to build it, the same problem could arise.
First there is a character group which includes all character except 'wi',
but then there's an or with an 'i' character.

So as net result, only the w shouldn't be matched, the input string doesn't contain a 'w', so it should match.

In perl this matches.

Can anyone conform this is a bug or I'm missing something ?

TIA
Greetings

Nov 15 '05 #2

Hi,

"Brian Davis" <@> wrote in message
news:uh**************@TK2MSFTNGP12.phx.gbl...
I have seen this problem with alternation before. To get around it, you can use grouping parentheses for each part of the alternation:

^(([^wi])|([i]))*$
Yes, I noticed, but the fun part is, that it only works for capturing
groups, if you would embed it in non-capturing groups(?:), it fails again...

Note that this may change your result if you reference unnamed groups. I
don't know why it works that way, but it definitely appears to be a bug in
.NET regular expressions.
I hope it gets fixed.

Thanks for the reply
greetings

Brian Davis
www.knowdotnet.com


"BMermuys" <bm**************@hotmail.com> wrote in message
news:fs*********************@phobos.telenet-ops.be...
Hi,

string test="dit is een test";
bool bMatch = Regex.IsMatch( test, "^([^wi]|[i])*$" );

after executing, the bMatch is false

The pattern is not optimized and seems a little stupid. But for large

regex
expressions using smaller strings to build it, the same problem could

arise.

First there is a character group which includes all character except 'wi', but then there's an or with an 'i' character.

So as net result, only the w shouldn't be matched, the input string

doesn't
contain a 'w', so it should match.

In perl this matches.

Can anyone conform this is a bug or I'm missing something ?

TIA
Greetings


Nov 15 '05 #3

This thread has been closed and replies have been disabled. Please start a new discussion.

Similar topics

3
by: Jon Maz | last post by:
Hi All, Am getting frustrated trying to port the following (pretty simple) function to CSharp. The problem is that I'm lousy at Regular Expressions.... //from...
9
by: Tim Conner | last post by:
Is there a way to write a faster function ? public static bool IsNumber( char Value ) { if (Regex.IsMatch( Value.ToString(), @"^+$" )) { return true; } else return false; }
20
by: jeevankodali | last post by:
Hi I have an .Net application which processes thousands of Xml nodes each day and for each node I am using around 30-40 Regex matches to see if they satisfy some conditions are not. These Regex...
17
by: clintonG | last post by:
I'm using an .aspx tool I found at but as nice as the interface is I think I need to consider using others. Some can generate C# I understand. Your preferences please... <%= Clinton Gallagher ...
6
by: Extremest | last post by:
I have a huge regex setup going on. If I don't do each one by itself instead of all in one it won't work for. Also would like to know if there is a faster way tried to use string.replace with all...
7
by: Extremest | last post by:
I am using this regex. static Regex paranthesis = new Regex("(\\d*/\\d*)", RegexOptions.IgnoreCase); it should find everything between parenthesis that have some numbers onyl then a forward...
3
by: aspineux | last post by:
My goal is to write a parser for these imaginary string from the SMTP protocol, regarding RFC 821 and 1869. I'm a little flexible with the BNF from these RFC :-) Any comment ? tests= def...
15
by: morleyc | last post by:
Hi, i would like to remove a number of characters from my string (\t \r \n which are throughout the string), i know regex can do this but i have no idea how. Any pointers much appreciated. Chris
4
by: CJ | last post by:
Is this the format to parse a string and return the value between the item? Regex pRE = new Regex("<File_Name>.*>(?<insideText>.*)</File_Name>"); I am trying to parse this string. ...
0
by: Karch | last post by:
I have these two methods that are chewing up a ton of CPU time in my application. Does anyone have any suggestions on how to optimize them or rewrite them without Regex? The most time-consuming...
0
by: Charles Arthur | last post by:
How do i turn on java script on a villaon, callus and itel keypad mobile phone
0
by: ryjfgjl | last post by:
In our work, we often receive Excel tables with data in the same format. If we want to analyze these data, it can be difficult to analyze them because the data is spread across multiple Excel files...
1
by: nemocccc | last post by:
hello, everyone, I want to develop a software for my android phone for daily needs, any suggestions?
1
by: Sonnysonu | last post by:
This is the data of csv file 1 2 3 1 2 3 1 2 3 1 2 3 2 3 2 3 3 the lengths should be different i have to store the data by column-wise with in the specific length. suppose the i have to...
0
by: Hystou | last post by:
There are some requirements for setting up RAID: 1. The motherboard and BIOS support RAID configuration. 2. The motherboard has 2 or more available SATA protocol SSD/HDD slots (including MSATA, M.2...
0
marktang
by: marktang | last post by:
ONU (Optical Network Unit) is one of the key components for providing high-speed Internet services. Its primary function is to act as an endpoint device located at the user's premises. However,...
0
by: Hystou | last post by:
Most computers default to English, but sometimes we require a different language, especially when relocating. Forgot to request a specific language before your computer shipped? No problem! You can...
0
by: Hystou | last post by:
Overview: Windows 11 and 10 have less user interface control over operating system update behaviour than previous versions of Windows. In Windows 11 and 10, there is no way to turn off the Windows...
0
tracyyun
by: tracyyun | last post by:
Dear forum friends, With the development of smart home technology, a variety of wireless communication protocols have appeared on the market, such as Zigbee, Z-Wave, Wi-Fi, Bluetooth, etc. Each...

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.