我如何使用正则表达式来匹配android中的这个字符串?

时间:2013-09-06 17:20:35

标签: android regex image

我想从json数据中返回的文本中获取img标签,如

‫#رصد| #انقلاب_3يوليو| اليوم ... مبني المركبات العسكري في صلاح سالم<br /> <br /> تصوير المواطن الصحفي :  عبدالرحمن النحاس‬<br/><br/><a href="https://www.facebook.com/photo.php?fbid=598075296936250&amp;set=a.280183138725469.58204.103622369714881&amp;type=1&amp;relevant_count=1" id="" title="" target="" onclick="" style=""><img class="img" src="https://fbcdn-photos-c-a.akamaihd.net/hphotos-ak-frc3/1239478_598075296936250_1910331324_s.jpg" alt="" /></a>

我想抓住这个

<img class="img" src="https://fbcdn-photos-c-a.akamaihd.net/hphotos-ak-frc3/1239478_598075296936250_1910331324_s.jpg" alt="" />

我必须在android中使用的reqular表达式来匹配它

我使用了这段代码,但它无效

String content = e.getString("content");
                    String img = "";
                    Pattern p = Pattern
                            .compile("<img[^>]+src\\s*=\\s*['\"]([^'\"]+)['\"][^>]*>");
                    Matcher m = p.matcher(content);

                    if (m.matches()) {
                        Log.d("true", m.group(0).toString());
                        img = m.group(0).toString();
                    }
                    Log.d("image", "image : " + content);

2 个答案:

答案 0 :(得分:1)

使用正则表达式解析HTML是very bad idea

最好使用真正的HTML解析器并遍历DOM树以获得您想要的内容。

您还需要注意正确的编码,因为您需要阿拉伯语文本。

答案 1 :(得分:1)

嗯......你知道你可以获得JSON对象并解析没有正则表达式吗?这可能是最好的方法。然后你可以删除内容而不必担心从字符串中解析任何内容,因为它会自动将它放入变量中。

How to parse JSON

由于@duffymo在我上面发布的原因,乱搞正则表达式会变得非常混乱。

编辑:

我看到你要做的事情......从正确的内容部分解析图像?这里需要涉及两件事是:正则表达式和json解析。您需要从json解析器中获取所有内容字段,然后在这些字段上使用正则表达式来提取图像。那就是你要做的正确吗?