Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 从IPTV中提取电视台名称的正则表达式_Regex - Fatal编程技术网

Regex 从IPTV中提取电视台名称的正则表达式

Regex 从IPTV中提取电视台名称的正则表达式,regex,Regex,我试图从IPTV M3U播放列表中使用的各种电视台格式中提取电视台名称。我发现的类型有: NL | NPO 3 FHD HEVC ||NL | | NPO 3 FHD HEVC NL:NPO 3 FHD HEVC NL:NPO 3 FHD+ NL:NPO 3高清 现在我试图提取NPO 3,这样我就可以将它与id为的外部列表进行匹配-以分配电视指南。我肯定还有其他一些类型,但我似乎无法让我的正则表达式正确地处理所有这些类型。问题是荷兰电台有NL,但其他国家有SE、PL、USA 我想到了这个:

我试图从IPTV M3U播放列表中使用的各种电视台格式中提取电视台名称。我发现的类型有:

  • NL | NPO 3 FHD HEVC
  • ||NL | | NPO 3 FHD HEVC
  • NL:NPO 3 FHD HEVC
  • NL:NPO 3 FHD+
  • NL:NPO 3高清
现在我试图提取NPO 3,这样我就可以将它与id为的外部列表进行匹配-以分配电视指南。我肯定还有其他一些类型,但我似乎无法让我的正则表达式正确地处理所有这些类型。问题是荷兰电台有NL,但其他国家有SE、PL、USA

我想到了这个:

/^\|\||.*\||\|\||:|(.+) FHD+|FHD +|FHD|HD|4K|UHD/i
当使用这个字符串:NL | NPO 3 FHD HEVC时,它的工作方式是:

Array
(
    [0] => Array
        (
            [0] => NL|
            [1] =>  NPO 3 FHD
        )

    [1] => Array
        (
            [0] => 
            [1] =>  NPO 3
        )

)
1
使用此字符串时:NL:NPO 3 FHD HEVC会导致:

Array
(
    [0] => Array
        (
            [0] => NL: NPO 3 FHD
        )

    [1] => Array
        (
            [0] => NL: NPO 3
        )

)
1

我不太擅长制作正则表达式——不管我怎么做,我似乎都无法使它适用于各种格式

如果要从这些字符串中提取NPO 3,可以使用

^(?:[A-Z]+[|:]|\|\|[A-Z]+\|\|) (\S.*?) (?:FHD \+|FHD\+?|U?HD|4K)
解释

  • ^
    字符串的开头
  • (?:
    非捕获组
    • [A-Z]+[|::]
      匹配A-Z的1+个实例,后跟
      |
    • |
    • \\\\\\\\\\\\\\\\\\\\\\
      匹配
      \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
      1+A-~和
      \\\\\\\\\\\
  • 关闭组
  • (\S.*)
    匹配一个空格、一个非空白字符和0+乘以任何字符
  • (?:FHD\+| FHD\+?| U?HD | 4K)
    匹配一个备选方案

|

非常感谢!这正是我想要的!我用[]扩展了你的正则表达式?在空白处,所以它也匹配没有空白的NL:NPO 3。。