我在使用字符串中提取正则表达式的值时遇到了问题。我有一个带有几个正则表达式的字符串,我需要得到每个表达式匹配的值。但事情是,它没有正确地返回最后一场比赛。例如:
正则表达式: I play (\S+.*?) and (\S+.*?)
字符串:我弹吉他和低音
程序将第一个表达式的值作为“吉他”返回,但它将第二个表达式的值返回为“the”而不是“bass”。有办法解决这个问题吗?
答案 0 :(得分:2)
尝试:I play (\S+.*) and (\S+.*)
。
答案 1 :(得分:1)
嗯,你使用.*?
要求一个最小长度的匹配,所以你去。
它适用于第一组因为and
是锚。对于第二组,没有锚,因此是最小匹配。
尝试添加字符串标记的结尾作为锚:I play (\S+.*?) and (\S+.*?)$
答案 2 :(得分:0)
试试这个:I play (\S+.+) and (\S+.+)