0

所以我有一条丑陋的绳子,我从电线上拿起:

{“feedtype”:“播放列表”,“base_url”:“ http://feeds.xhis.com/rteavgen/player/ ”,“feed_title”:“单项播放列表”,“feedid”:“播放列表”,“alt_url ": " http://www.xhis.com/player/#v=10322367 ", "平台": "iptv", "current_date": "2014-11-14T12:24:39.84167", "full_url": " http://feeds.xhis.com/rteavgen/player/playlist?type=iptv&showId=10343367 ", "shows": [{"itemid": 10332367, "showid": 11544367, "valid_start": "2014-11- 13T21:37:39”,“ispodcast”:0,“programmeid”:1,“BRINumber”:“ih011305791”,“持续时间”:2053247,“id”:10323367,“媒体:组”:[{“rte:服务器”:“ http://vod.hds.xhis.com/hds-vod”、“中”:“视频”、“网址”:“/2014/1113/20141113-dumbydoozle_cl10344367_10344406_260_/manifest.f4m”、“类型”:“视频/mp4”、“我

它有点 JSONy - 我得到的字符串并不总是保证是完整的,所以我无法解析它。此外,协议可能会改变。

无论如何,我正在尝试这样做:

  • 找到“manifest.f4m”
  • 提取字符串:“/2014/1113/20141113-dumbydoozle_cl10344367_10344406_260_/manifest.f4m”

一旦我有了 manifest.f4m 的位置,我就完成了。


所以我试图制定一个正则表达式来可靠地做到这一点,但我遇到了可怕的麻烦......

这是我到目前为止的正则表达式:

/(?<=\/)manifest.f4m(?=("|\s))/

它匹配“manifest.f4m”(后面有一个“或一个空格)。

我有点坚持向后看 - 我想回顾第一个“/”并提取“url”指向的整个字符串。

虽然也许有更好的方法来做这一切?

4

2 回答 2

1

所以我想出了这个正则表达式:

[-A-Za-z0-9+&@#\/%?=~_|!:,.;]+[-A-Za-z0-9+&@#\/%=~_|]manifest\.f4m(?=("|\s))

它似乎工作得很好。

http://regex101.com/r/iT7vG2/2

于 2014-11-14T11:11:55.033 回答
0

你能从 url: 部分开始并使用非捕获组吗?我认为至少它会存在我根据你的示例对其进行测试并且似乎可以工作

\b(?:url.+)(/.+manifest\.f4m)
于 2014-11-14T11:24:28.200 回答