当前位置:  开发笔记 > 编程语言 > 正文

什么是"嵌套量词",为什么它会导致我的正则表达式失败?

如何解决《什么是"嵌套量词",为什么它会导致我的正则表达式失败?》经验,为你挑选了2个好方法。

我有这个正则表达式我在正则表达式伙伴中构建和测试.

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

当我在.Net C#中使用它时

我收到了例外

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

这个错误是什么意思?显然.net不喜欢这个表达.

这是正则表达式的伙伴,所以你可以用正则表达式来理解我的意图......

_ [ 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»

简而言之...

什么是嵌套量词?



1> stevemegson..:

.NET不支持占有量词

{10}+

但是,{10}应该具有完全相同的效果.如果最长的匹配失败,+避免回溯并尝试更短的匹配,但是因为{10}只能匹配10个字符才能开始,这并没有实现太多.

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

应该没事.我也放弃了"{1} +"位.由于它只匹配一次,"A {1} +"相当于"A".

编辑 作为Porges说,如果你确实需要在.NET中占有量词,那么原子团给予相同的功能与(>[0-9]*)等价于[0-9]*+.



2> Duncan..:

.NET正在抱怨样式量词+之后,{n}因为它没有任何意义. {n}意味着完全匹配给定组的n. +表示匹配给定组中的一个或多个.删除+'s,它将编译好.

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


在某些正则表达式中,{min,max} +是占有量量词,但.Net不支持它们.如果您正在使用Regex好友,可以通过右键单击合成窗格并从下拉列表中选择"Flavor"来告诉您正在使用哪种正则表达式.
推荐阅读
惬听风吟jyy_802
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有