// include the latest version of the regex crate in your Cargo.toml
extern crate regex;
use regex::Regex;
fn main() {
let regex = Regex::new(r#"(?m)(?s:("name" : "(.*?)".*?作者[:]*</span>[:]*.*?>(.*?)<.*?出版社.*?> (.*?)<.*?>出版年.*?([\d]{4}-[\d]).*?定价:</span> (.*?)<.*?ISBN:</span> (.*?)<.*?v:average"> ([\d].[\d]).*?v:votes">([\d]+?)<.*?"rating_per">(.*?)<.*?"rating_per">(.*?)<.*?"rating_per">(.*?)<.*?"rating_per">(.*?)<.*?"rating_per">(.*?)<))"#).unwrap();
let string = "
<script type=\"application/ld+json\">
{
\"@context\":\"http://schema.org\",
\"@type\":\"Book\",
\"workExample\": [],
\"name\" : \"索拉里斯星\",
<span class=\"pl\"> 作者</span>:
<a class=\"\" href=\"/search/%E6%96%AF%E5%9D%A6%E5%B0%BC%E6%96%AF%E7%93%A6%E5%A4%AB%C2%B7%E8%8E%B1%E5%A7%86\">[波] 斯坦尼斯瓦夫·莱姆</a>
</span><br/>
<span class=\"pl\">出版社:</span> 译林出版社<br/>
<span class=\"pl\">原作名:</span> Solaris<br/>
<span>
<span class=\"pl\"> 译者</span>:
<a class=\"\" href=\"/search/%E9%9D%96%E6%8C%AF%E5%BF%A0\">靖振忠</a>
</span><br/>
<span class=\"pl\">出版年:</span> 2021-8<br/>
<span class=\"pl\">页数:</span> 254<br/>
<span class=\"pl\">定价:</span> 49.00元<br/>
<span class=\"pl\">装帧:</span> 平装<br/>
<span class=\"pl\">丛书:</span> <a href=\"https://book.douban.com/series/54333\">译林幻系列</a><br>
<span class=\"pl\">ISBN:</span> 9787544782173<br/>
</div>
</div>
<div id=\"interest_sectl\" class=\"\">
<div class=\"rating_wrap clearbox\" rel=\"v:rating\">
<div class=\"rating_logo\">豆瓣评分</div>
<div class=\"rating_self clearfix\" typeof=\"v:Rating\">
<strong class=\"ll rating_num \" property=\"v:average\"> 8.7 </strong>
<span property=\"v:best\" content=\"10.0\"></span>
<div class=\"rating_right \">
<div class=\"ll bigstar45\"></div>
<div class=\"rating_sum\">
<span class=\"\">
<a href=\"comments\" class=\"rating_people\"><span property=\"v:votes\">8085</span>人评价</a>
</span>
</div>
</div>
</div>
<span class=\"stars5 starstop\" title=\"力荐\">
5星
</span>
<div class=\"power\" style=\"width:64px\"></div>
<span class=\"rating_per\">46.0%</span>
<br>
<span class=\"stars4 starstop\" title=\"推荐\">
4星
</span>
<div class=\"power\" style=\"width:54px\"></div>
<span class=\"rating_per\">39.4%</span>
<br>
<span class=\"stars3 starstop\" title=\"还行\">
3星
</span>
<div class=\"power\" style=\"width:17px\"></div>
<span class=\"rating_per\">12.5%</span>
<br>
<span class=\"stars2 starstop\" title=\"较差\">
2星
</span>
<div class=\"power\" style=\"width:2px\"></div>
<span class=\"rating_per\">1.8%</span>
<br>
<span class=\"stars1 starstop\" title=\"很差\">
1星
</span>
<div class=\"power\" style=\"width:0px\"></div>
<span class=\"rating_per\">0.3%</span>
";
// result will be an iterator over tuples containing the start and end indices for each match in the string
let result = regex.captures_iter(string);
for mat in result {
println!("{:?}", mat);
}
}
Please keep in mind that these code samples are automatically generated and are not guaranteed to work. If you find any syntax errors, feel free to submit a bug report. For a full regex reference for Rust, please visit: https://docs.rs/regex/latest/regex/