日期:2014-05-17  浏览次数:20863 次

一个正则表达式求解,如何匹配最右?
本帖最后由 llx1990 于 2013-02-24 22:03:56 编辑
现在我有一串字符串
good12345good654321bad

我用这个表达式匹配
(?<=(good)).*?(?=(bad))
结果为
12345good654321

但是我想要匹配的是最右边最短的那个good,也就是说,结果要为
654321

请问要怎么从到最右边的good开始匹配,而不是一开始的那个good呢?

------解决方案--------------------
加上匹配的内部不包含'good'就行了。

(?<=(good))((?!good).)*(?=(bad))
------解决方案--------------------
顶机器人
还有一种解决方案:
匹配的时候,从右至左匹配:
Regex reg=new Regex("",RegexOptions.RightToLeft);