【发布时间】:2014-04-04 19:57:57
【问题描述】:
我在 Visual Studio 2010 中使用 C# 模式匹配和正则表达式。
所以我的问题是我想匹配如下字符串:
dog1dog235cat7 获奖者
lizard2433cat23dog44 失败者
dog23 获奖者
我有字母后跟一些数字,然后是 0 个或多个字母/数字组合。总会有一个空格,后面跟着一些短语。
我正试图弄清楚如何区分诸如“dog7 骨头和零食”之类的东西。
我目前想出的模式是:
[a-zA-Z]+[0-9]+([a-zA-Z]+[0-9]+)*\s\w
问题是我没有找到任何关于测试出现 0 次或更多次的模式块的好信息。所以我不知道是否有一个好的分组字符表明这个块可以出现0次或更多次。我正在尝试使用 ([a-zA-Z]+[0-9]+)* 中的括号进行此操作,尽管我相信这通常与 Group 一起使用关键字提取模式的一部分实例供以后使用。
那么有谁知道我怎样才能检查 [a-zA-Z]+[0-9]+ 的模式片段是否出现 0 次或更多次? p>
(我环顾四周,但我还没有看到关于匹配出现 0 次或更多次的一组字符的 C# 版本。
如果它有助于我将字符串与模式进行比较。但我再次看到是否有办法区分额外的东西。由于“dog7 骨头和零食”确实有一个片段与我的模式匹配(dog7 骨头),但我想知道是否有办法说在这之后是否有额外的那么它不是匹配的(额外的是“和零食” )。
【问题讨论】:
-
那么您期望例如来自
dog1dog235cat7 Winners的输出是什么? -
请更清楚地说明您要匹配的内容。当您运行 RegExp 时,C# 将返回一个 MatchCollection 对象,其中包含所有匹配项。我只是不确定您在字符串中到底要寻找什么。
-
因此,如果您发现字母后跟数字,那么相同类型的字母/数字组合 0 次或多次,然后是空格和单词。但我不想捡起碰巧以字母开头后跟数字的东西,并在“dog7 骨头和零食”之类的东西上得到匹配。所以像我在我的问题中提出的东西就是我正在寻找的东西。
-
@pasty 我只是在查看字符串是否根据模式有效,但如果它们不是我想要的,我希望能有所限制。我正在寻找的东西->(ert744adc98 OneWord)我不寻找的东西->(ert744adc98 WordOne WordTwo WordN)。看起来仅模式匹配对传入字符串的限制不够。
标签: c# regex pattern-matching expression