Regex 从IPTV中提取电视台名称的正则表达式
我试图从IPTV M3U播放列表中使用的各种电视台格式中提取电视台名称。我发现的类型有: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 我想到了这个:
- NL | NPO 3 FHD HEVC
- ||NL | | NPO 3 FHD HEVC
- NL:NPO 3 FHD HEVC
- NL:NPO 3 FHD+
- NL:NPO 3高清
/^\|\||.*\||\|\||:|(.+) 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的1+个实例,后跟[A-Z]+[|::]
或|
:
或|
匹配\\\\\\\\\\\\\\\\\\\\\\
1+A-~和\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
\\\\\\\\\\\
关闭组)
匹配一个空格、一个非空白字符和0+乘以任何字符(\S.*)
匹配一个备选方案(?:FHD\+| FHD\+?| U?HD | 4K)
|非常感谢!这正是我想要的!我用[]扩展了你的正则表达式?在空白处,所以它也匹配没有空白的NL:NPO 3。。