Vb.Net - 在提取通配符值时遇到问题

时间:2011-07-20 22:36:19

标签: .net regex vb.net

我在使用字符串中提取正则表达式的值时遇到了问题。我有一个带有几个正则表达式的字符串,我需要得到每个表达式匹配的值。但事情是,它没有正确地返回最后一场比赛。例如:

正则表达式: I play (\S+.*?) and (\S+.*?)

字符串:我弹吉他和低音

程序将第一个表达式的值作为“吉他”返回,但它将第二个表达式的值返回为“the”而不是“bass”。有办法解决这个问题吗?

3 个答案:

答案 0 :(得分:2)

尝试:I play (\S+.*) and (\S+.*)

答案 1 :(得分:1)

嗯,你使用.*?要求一个最小长度的匹配,所以你去。

它适用于第一组因为and是锚。对于第二组,没有锚,因此是最小匹配。

尝试添加字符串标记的结尾作为锚:I play (\S+.*?) and (\S+.*?)$

答案 2 :(得分:0)

试试这个:I play (\S+.+) and (\S+.+)