匹配模式匹配中的表达式0次或更多次C#

时间:2014-04-04 19:57:57

标签: c# regex pattern-matching expression

我正在使用Visual Studio 2010与正则表达式进行C#模式匹配。

所以我的问题是我想匹配像:

这样的字符串

dog1dog235cat7获奖者

lizard2433cat23dog44失败者

dog23获奖者

我的字母后跟一些数字,然后是0或更多字母/数字组合。总会有一个空格后跟一些短语。

我正在试图弄清楚如何歧视像#7; dog7骨头和对待&#34 ;.

我目前提出的模式是:

[a-zA-Z]+[0-9]+([a-zA-Z]+[0-9]+)*\s\w

问题是我没有找到关于测试0次或更多次模式块的任何好信息。所以我不知道是否有一个好的分组字符表明这个块可以出现0次或更多次。我正在尝试使用([a-zA-Z] + [0-9] +)* 中的括号,但我相信它通常与一起使用用于提取模式部分实例以供以后使用的关键字。

所以有人知道我怎样才能得到 [a-zA-Z] + [0-9] + 这个模式的部分被检查0次或更多次?

(我已经环顾四周了,但我还没有看到关于匹配一组0次或更多次角色的C#版本。)


如果它有助于我将字符串与模式进行比较。但我再一次看到是否有办法区分额外的东西。因为" dog7骨头和治疗"确实有一个与我的模式相匹配的片段(dog7骨骼),但是我想知道是否有办法说出在此之后是否有额外的内容然后它不匹配(额外的是&#34 ;和对待")。

1 个答案:

答案 0 :(得分:0)

因此,我一直在关注这一点,从我在处理模式匹配时所看到的情况来看,它更像是"什么与我追求的相匹配"不是"如果有什么东西不能完全匹配,那么拒绝"。基于我在MSDN上阅读的内容以及我多次查看http://msdn.microsoft.com/en-us/library/ae5bf541(v=vs.80).aspx后我尝试过的内容,我得出结论,根据我的需要,我只需要添加额外的代码来分割我的字符串在空白区域,如果分割的长度大于2,那么我知道还有其他输入,我不想要。如

string[] words = myInput.Split(' ');
if(words.Length > 2)
    //ignore this string 

或者我也可以反过来检查长度是否为2,如果是,那么我的工作是好的。

我将使用模式匹配来确保字符串输入仍然是他们需要的,但是我将不得不使用这些额外的东西来区分这些额外的不需要的东西。

但是,除非别人知道如何制作像#7; dog7骨头和对待"当我正在寻找类似于" AB23454 CD43"这是我的问题的解决方案。