java - 计数以 x 开头的字符串,并存储在 Array Android Studio 中

标签 java android arrays regex json

我在存储 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,而应该使用适当的解析器。造成这种情况的原因很多

  • 属性顺序,如 relhref可以更改,以便您可以看到类似 <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/

相关文章:

java - Android 上的 Guice 性能

java - 在fuse Fabric中部署camel项目

android - native Android 应用程序的服务器端语言

android - MVP kotlin 中的 Mockito 测试 - 但是,与此模拟异常恰好有 1 次交互

python - 在 numpy 数组中查找多个值的行索引

java - 模数不为正 :BigInteger

java - SoapUI - 以 JSON 格式发送登录详细信息

java - onPostExecute 被调用两次并显示双倍结果

Ruby 可枚举反向检测

java - 检查数组列表是否有值