0

尽管尝试了各种在线正则表达式测试器,但这里的全新程序员在正则表达式方面遇到了麻烦。我在 Eclipse 中开发一个 Android 项目我正在查询一个 openx 广告服务器以获取文本广告并得到这个作为回报:

var OX_abced445 = '';
OX_abced445 += "<"+"a href=\'http://the.server.url/openx/www/delivery/ck.php?oaparams=2__bannerid=29__zoneid=3__cb=e3efa8b703__oadest=http%3A%2F%2Fsomesite.com\'target=\'_blank\'>This is some sample text to test with!<"+"/a><"+"div id=\'beacon_e3efa8b703\'style=\'position: absolute; left: 0px; top: 0px; visibility:hidden;\'><"+"img src=\'http://the.server.url/openx/www/delivery/lg.php?bannerid=29&amp;campaignid=23&amp;zoneid=3&amp;loc=1&amp;cb=e3efa8b703\' width=\'0\'height=\'0\' alt=\'\' style=\'width: 0px; height: 0px;\' /><"+"/div>\n";
document.write(OX_abced445);

我需要提取第一个 href url,而不是 img src url,所以我想我应该有一个正则表达式来查找 and 之间的所有href=\'内容'。我还需要提取目标文本,即。This is some sample text to test with!封装在_blank\'>和之间<"+"/a>。我发现很多正则表达式处理提取 url 等,但在这种特殊情况下很难让一个在 Eclipse 中工作。任何援助将不胜感激。

4

1 回答 1

0

尝试使用正则表达式解析生成 HTML 的 JavaScript是一个非常糟糕的主意。改用JSoupValidator.nu之类的东西用于 Java 或Nokogiri用于 Ruby。如果您必须使用正则表达式:

Plain regex:
^.*? href=\\'([^']+)\'[^>]*>([^<]*)<

or, in Java:

Pattern p = Pattern.compile("^.*? href=\\\\'([^']+)\\'[^>]*>([^<]*)<", 
                            Pattern.MULTILINE);
Matcher m = p.matcher(hideousString);
m.find();
// Now m.group(1) is the URL and m.group(2) is the text

将捕获href捕获组 1 中的 url 和捕获组 2 中的文本,但如果站点更改其响应格式,这将很快中断。

于 2013-05-27T21:29:13.250 回答