【发布时间】:2020-11-29 06:42:01
【问题描述】:
当我从我们的网站 url 检索数据时,它会在其余 api 字段之一中返回此输出,并且我尝试查找是否包含 tracks 我从下面的 tracks 源中获取 url 是我需要的得到
String test = """
<div class=\"wp-playlist wp-audio-playlist wp-playlist-light\">\n
<div class=\"wp-playlist-current-item\"></div>\n
<p>\t\t<audio controls=\"controls\" preload=\"none\" width=\"\n\t\t\t\t1118\t\"\n\t\t>
</audio></p>\n<div class=\"wp-playlist-next\"></div>\n<div class=\"wp-playlist-prev\">
</div>\n<p>\t<noscript></p>\n<ol>\n<li>
<a href='https://www.caferilik.com/wp-content/uploads/2020/11/Anne-Baba-Biz-Suçluyuz-Muhafazakar-Ailelerde-Kuşak-Çatışması-Sesli-Kitap-www.caferilik.com_.mp3'>
Anne Baba Biz Suçluyuz - Muhafazakar Ailelerde Kuşak Çatışması (Sesli Kitap) www.caferilik.com<
/a></li>\n</ol>\n<p>\t</noscript><br />\n\t
<script type=\"application/json\" class=\"wp-playlist-script\">
{\"type\":\"audio\",\"tracklist\":true,\"tracknumbers\":true,\"images\":true,\"artists\":true,
\"tracks\":[{\"src\":\"https:\\/\\/www.caferilik.com\\/wp-content\\/uploads\\/2020\\/11\\/Anne-Baba-Biz-Su\\u00e7luyuz-Muhafazakar-Ailelerde-Ku\\u015fak-\\u00c7at\\u0131\\u015fmas\\u0131-Sesli-Kitap-www.caferilik.com_.mp3\",
\"type\":\"audio\\/mpeg\",\"title\":\"Anne Baba Biz Su\\u00e7luyuz - Muhafazakar Ailelerde Ku\\u015fak \\u00c7at\\u0131\\u015fmas\\u0131 (Sesli Kitap) www.caferilik.com\",\"caption\":\"\",
\"description\":\"\\\"Anne Baba Biz Su\\u00e7luyuz - Muhafazakar Ailelerde Ku\\u015fak \\u00c7at\\u0131\\u015fmas\\u0131 (Sesli Kitap) www.caferilik.com\\\".\",\"meta\":{\"length_formatted\":\"2:28:02\"},
\"image\":{\"src\":\"https:\\/\\/www.caferilik.com\\/wp-includes\\/images\\/media\\/audio.png\",\"width\":48,\"height\":64},\"thumb\":
{\"src\":\"https:\\/\\/www.caferilik.com\\/wp-includes\\/images\\/media\\/audio.png\",\"width\":48,\"height\":64}}]}</script>\n</div>\n
""";
test = test.replaceAll('\n', '').replaceAll('\t', '').replaceAll('\\', '');
我可以找到很多RegExp 来从字符串中获取link,但我需要获取tracks 的来源
【问题讨论】:
-
您想要得到的确切输出是什么?
-
@WiktorStribiżew 从轨道源获取
mp3文件链接 -
我怀疑正则表达式在这里效果最好,您需要 1) 一个 HTML 解析器来获取正确的脚本标记值和 2) JSON 解析器来获取正确的值。我试图想出一个正则表达式,但它不是很好,
new RegExp(r'<script[^>]*>[^<]*?"tracks"[^<]*?"(http\S*?\.mp3)"[^<]*?</script>').firstMatch(test)[1]。嗯,[^<]*?</script>看起来是多余的,但是模式真的很丑。 -
@DolDurma 示例代码看起来像 Java。这是为 Dart/Flutter=JS 设计的吗?
-
感谢您接受答复。如果我的回答有帮助,也请点赞。