我在存储 JSON 数据的字符串中创建了一个正则表达式,我可以在我的 JSON 数据中找到所有图像:
Pattern pattern = Pattern.compile("<a[^>]*>");
Matcher matcher = pattern.matcher(contentString.toString());
while(matcher.find()) {
Log.i(TAG, "MATCHER : "+ matcher.group());
}
返回:
04-13 16:33:57.279 3642-3657/jardelcompany.bundoransurfco I/MainActivity﹕ MATCHER : <a rel="prettyPhoto[gallery-113]" href='http://www.bundoransurfco.com/wp-content/uploads/2014/11/april-13.jpg'>
04-13 16:33:57.279 3642-3657/jardelcompany.bundoransurfco I/MainActivity﹕ MATCHER : <a rel="prettyPhoto[gallery-113]" href='http://www.bundoransurfco.com/wp-content/uploads/2014/11/10501752_10152650053307000_6249740615573255728_n1.jpg'>
04-13 16:33:57.279 3642-3657/jardelcompany.bundoransurfco I/MainActivity﹕ MATCHER : <a href="http://www.windguru.cz/int/index.php?sc=103244">
04-13 16:33:57.279 3642-3657/jardelcompany.bundoransurfco I/MainActivity﹕ MATCHER : <a href="http://www.xcweather.co.uk/">
04-13 16:33:57.279 3642-3657/jardelcompany.bundoransurfco I/MainActivity﹕ MATCHER : <a href="http://www.buoyweather.com/wxnav6.jsp?region=UK&program=nww3BW1&grb=nww3&latitude=55.0&longitude=-8.75&zone=0&units=e">
04-13 16:33:57.279 3642-3657/jardelcompany.bundoransurfco I/MainActivity﹕ MATCHER : <a href="http://www.windguru.cz/int/index.php?sc=103244">
04-13 16:33:57.279 3642-3657/jardelcompany.bundoransurfco I/MainActivity﹕ MATCHER : <a href="http://www.xcweather.co.uk/">
04-13 16:33:57.279 3642-3657/jardelcompany.bundoransurfco I/MainActivity﹕ MATCHER : <a href="http://www.buoyweather.com/wxnav6.jsp?region=UK&program=nww3BW1&grb=nww3&latitude=55.0&longitude=-8.75&zone=0&units=e">
04-13 16:33:57.279 3642-3657/jardelcompany.bundoransurfco I/MainActivity﹕ MATCHER : <a href="http://magicseaweed.com/Bundoran-Surf-Report/50/">
04-13 16:33:57.279 3642-3657/jardelcompany.bundoransurfco I/MainActivity﹕ MATCHER : <a href="http://magicseaweed.com/UK-Ireland-MSW-Surf-Charts/1/">
04-13 16:33:57.279 3642-3657/jardelcompany.bundoransurfco I/MainActivity﹕ MATCHER : <a href="http://www.marine.ie/Home/site-area/data-services/marine-forecasts/wave-forecasts">
04-13 16:33:57.279 3642-3657/jardelcompany.bundoransurfco I/MainActivity﹕ MATCHER : <a href="http://magicseaweed.com/Bundoran-Surf-Report/50/">
04-13 16:33:57.279 3642-3657/jardelcompany.bundoransurfco I/MainActivity﹕ MATCHER : <a href="http://magicseaweed.com/UK-Ireland-MSW-Surf-Charts/1/">
04-13 16:33:57.279 3642-3657/jardelcompany.bundoransurfco I/MainActivity﹕ MATCHER : <a href="http://www.marine.ie/Home/site-area/data-services/marine-forecasts/wave-forecasts">
04-13 16:33:57.280 3642-3657/jardelcompany.bundoransurfco I/MainActivity﹕ MATCHER : <a href="http://news.bbc.co.uk/weather/forecast/13000">
04-13 16:33:57.280 3642-3657/jardelcompany.bundoransurfco I/MainActivity﹕ MATCHER : <a href="http://www.met.ie/">
04-13 16:33:57.280 3642-3657/jardelcompany.bundoransurfco I/MainActivity﹕ MATCHER : <a href="http://news.bbc.co.uk/weather/forecast/13000">
04-13 16:33:57.280 3642-3657/jardelcompany.bundoransurfco I/MainActivity﹕ MATCHER : <a href="http://www.met.ie/">
04-13 16:33:57.280 3642-3657/jardelcompany.bundoransurfco I/MainActivity﹕ MATCHER : <a href="http://www.irishtimes.com/weather/tides.html">
但现在我想计算以“<a rel="prettyPhoto[gallery-113]"
”开头的链接的数量,并将他的 href 链接存储在数组中...
你有什么想法吗? 干杯!
最佳答案
您不应该使用正则表达式来解析 HTML,而应该使用适当的解析器。造成这种情况的原因很多
- 属性顺序,如
rel
和href
可以更改,以便您可以看到类似<a href="..." rel="">
的元素如果您的正则表达式将描述<a rel="..." href="...">
,则可以轻松跳过. - 属性不需要用
"
包围但是用'
这会带来跳过重要数据的额外风险。
我喜欢用 jsoup所以这是这个库的例子:
Document doc = Jsoup.parse(htmlText);
Elements relLinks = doc.select("a[rel]");
//or if you want rel only with "prettyPhoto[gallery-113]" use
//Elements relLinks = doc.select("a[rel=prettyPhoto[gallery-113]]");//
System.out.println("number of `rel`: "+relLinks.size());
for (Element el : relLinks){
System.out.println(el.attr("href"));
}
输出:
number of `rel`: 2
http://www.bundoransurfco.com/wp-content/uploads/2014/11/april-13.jpg
http://www.bundoransurfco.com/wp-content/uploads/2014/11/10501752_10152650053307000_6249740615573255728_n1.jpg
关于java - 计数以 x 开头的字符串,并存储在 Array Android Studio 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29609586/