正则表达式后视以提取字符串



所以我有这个丑陋的字符串,我正在从电线上捡起:

{"feedtype": "playlist", "base_url": "http://feeds.xhis.com/rteavgen/player/"、"feed_title": "单件商品" 播放列表", "饲料 ID": "播放列表", "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", "show": [{"itemid": 10332367, "showid": 11544367, "valid_start": "2014-11-13T21:37:39", "ispodcast": 0, "programid": 1, "BRINumber": "IH011305791", "持续时间": 2053247, "id": 10323367, "媒体:组": [{"rte:server": "http://vod.hds.xhis.com/hds-vod", "medium": "video", "网址": "/2014/1113/20141113-dumbydoozle_cl10344367_10344406_260_/manifest.f4m", "类型": "视频/MP4", "I

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

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

  • 查找"清单.f4m"
  • 提取字符串:"/2014/1113/20141113-dumbydoozle_cl10344367_10344406_260_/manifest.f4m"

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


所以我正在尝试制定一个正则表达式来可靠地执行此操作,但我遇到了可怕的麻烦......

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

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

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

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

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

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

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

它似乎工作得很好。

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

你能从网址开始吗:部分并使用非捕获组我想至少它会存在我根据您的示例对其进行了测试,似乎有效

b(?:url.+)(/.+manifest.f4m)

最新更新