boost regex默认使用perl正规表达式。
在未指定情况下使用贪婪模式匹配。
使用?可以指定为非贪婪模式,下面是维基上的描述:
? 当该字符紧跟在任何一个其他限制符(*,+,?,{n },{n ,},{n ,m })后面时,匹配模式是非贪婪的。非贪婪模式尽可能少的匹配所搜索的字符串,而默认的贪婪模式则尽可能多的匹配所搜索的字符串。例如,对于字符串「oooo
」,「o+?
」将匹配单个「o
」,而「o+
」将匹配所有「o
」。
比如在匹配html文件时应该使用:
<a href="(\S*)">(.*?)</a>
去匹配。若未使用?则将匹配文件最后一个</a>.