Dart mendapatkan elemen trek dari String menggunakan RegExp

Nov 28 2020

ketika saya mengambil data dari url situs web kami, yang mengembalikan output ini di salah satu bidang rest api dan saya mencoba menemukan jika tracksada saya mendapatkan url dari yang dalam trackssumber di bawah ini adalah yang perlu saya dapatkan

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('\\', '');

saya dapat menemukan banyak RegExpuntuk mendapatkan linkdari string tetapi saya harus mendapatkan sumbernyatracks

Jawaban

1 RyszardCzech Nov 28 2020 at 22:42

Menggunakan

"tracks":\[{"src":"([^"]+)

Lihat buktinya . Saat Anda memasukkannya ke dalam kode, nilai yang diperlukan akan berada di grup pertama.

Penjelasan

--------------------------------------------------------------------------------
  "tracks":                '"tracks":'
--------------------------------------------------------------------------------
  \[                       '['
--------------------------------------------------------------------------------
  {"src":"                 '{"src":"'
--------------------------------------------------------------------------------
  (                        group and capture to \1:
--------------------------------------------------------------------------------
    [^"]+                    any character except: '"' (1 or more
                             times (matching the most amount
                             possible))
--------------------------------------------------------------------------------
  )                        end of \1