Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

What is a "Nested Quantifier" and why is it causing my regex to fail?

Tags:

c#

.net

regex

I have this regex I built and tested in regex buddy.

"_ [ 0-9]{10}+ {1}+[ 0-9]{10}+ {2}+[ 0-9]{6}+ {2}[ 0-9]{2}"

When I use this in .Net C#

I receive the exception

"parsing \"_ [ 0-9]{10}+ +[ 0-9]{10}+  +[ 0-9]{6}+  [ 0-9]{2}\" - Nested quantifier +."

What does this error mean? Apparently .net doesn't like the expression.

Here is the regex buddy so u can understand my intention with the regex...

_ [ 0-9]{10}+ {1}+[ 0-9]{10}+ {2}+[ 0-9]{6}+ {2}[ 0-9]{2}

Match the characters "_ " literally «_ »
Match a single character present in the list below «[ 0-9]{10}+»
   Exactly 10 times «{10}+»
   The character " " « »
   A character in the range between "0" and "9" «0-9»
Match the character " " literally « {1}+»
   Exactly 1 times «{1}+»
Match a single character present in the list below «[ 0-9]{10}+»
   Exactly 10 times «{10}+»
   The character " " « »
   A character in the range between "0" and "9" «0-9»
Match the character " " literally « {2}+»
   Exactly 2 times «{2}+»
Match a single character present in the list below «[ 0-9]{6}+»
   Exactly 6 times «{6}+»
   The character " " « »
   A character in the range between "0" and "9" «0-9»
Match the character " " literally « {2}»
   Exactly 2 times «{2}»
Match a single character present in the list below «[ 0-9]{2}»
   Exactly 2 times «{2}»
   The character " " « »
   A character in the range between "0" and "9" «0-9»

In short...

What is a Nested quantifier?

like image 732
ctrlShiftBryan Avatar asked Oct 16 '08 20:10

ctrlShiftBryan


1 Answers

.NET is complaining about the + after the {n} style quantifier as it doesn't make any sense. {n} means match exactly n of a given group. + means match one or more of a given group. Remove the +'s and it'll compile fine.

"_ [ 0-9]{10} {1}[ 0-9]{10} {2}[ 0-9]{6} {2}[ 0-9]{2}"
like image 155
Duncan Avatar answered Oct 22 '22 15:10

Duncan