在boost正则表达式中组合两个正则表达式

时间:2013-03-26 23:08:05

标签: regex boost-regex

我有两个正则表达式,用于查找网址并确定该网址是否为silverlight视频网址

  1. 网址应至少包含其中一个扩展名.isma,.ismv,.isml

    正则表达式:.ism(a | v | l)

    1. 网址应包含字符串“/ QualityLevels({bitrate})/ Fragments(audio = {start-time})”

      正则表达式:/ QualityLevels(\ d +)/ Fragments(\ b(音频|视频|文字)\ b = \ d +)

    2. 如何将这两个字符串合并为一个,并确保满足这两个条件?

      is_silverlight_livestream_url(const char *url)
      {
          /*  expecting something that ends with
           *      "xxx.isml/QualityLevels(<bitrate>)/Fragments(<type>=<timecode>)"
           *  on-demand streams have the extension ".ism" instead of ".isml"
           */
          static boost::regex regex(my_regex_str);
          try {
              if (boost::regex_match(url, regex) == true) {
                  return true;
              }
          } catch (std::runtime_error e) {
          }
          return false;
      }
      

      Santhosh

1 个答案:

答案 0 :(得分:0)

你会有这样的东西,你在那里寻找一个字符串,然后是(可选的)额外字符(如果你知道这个URL的外观,你可能会更具体),然后是文件扩展名:

/QualityLevels(\d+)/Fragments(\b(audio|video|text)\b=\d+)(.+?)?.ism(a|v|l)