一个正则表达式求解,如何匹配最右?
本帖最后由 llx1990 于 2013-02-24 22:03:56 编辑
现在我有一串字符串
good12345
good654321
bad
我用这个表达式匹配
(?<=(
good)).*?(?=(
bad))
结果为
12345
good654321
但是我想要匹配的是最右边最短的那个good,也就是说,结果要为
654321
请问要怎么从到最右边的good开始匹配,而不是一开始的那个good呢?
------解决方案--------------------加上匹配的内部不包含'good'就行了。
(?<=(good))((?!good).)*(?=(bad))
------解决方案--------------------顶机器人
还有一种解决方案:
匹配的时候,从右至左匹配:
Regex reg=new Regex("",RegexOptions.RightToLeft);