[英]Matching string regular expression
我想匹配如下字符串中的數據:
24.Legacy.S01E08.720p.HDTV.x264-AVS [rarbg]
Colony.S02E09.720p.HDTV.x264-FLEET [rarbg]
以下測試幾乎可以正常運行,但需要進行一些調整:
preg_match_all(
'/(.*?).S([0-9]+)E([0-9]+).(.*?)(.*?)[(.*?)]/s',
$download,
$posts,
PREG_SET_ORDER
);
您是如此接近,您只需要為需求的后半部分添加測試:
(.*?).S([0-9]+)E([0-9]+).(.*?)-(.*?)\[(.*?)\]
您不需要/ s修飾符,它擴展了。 匹配元字符和換行符。 我建議使用/ e修飾符還允許使用小寫字母's01e14'。不要忘記轉義正則表達式字符。 與 \\。 和\\ [
// NAME SEASON EPISOE MEDIUM OPTIONS
$regex = '/(.+)\.S([0-9]+)E([0-9]+)\.(.+)\[(.+)\]/i';
preg_match_all(
$regex,
$download,
$posts,
PREG_SET_ORDER
);
使用“ 24.Legacy.S01E08.720p.HDTV.x264-AVS [rarbg]”進行測試
Array
(
[0] => 24.Legacy.S01E08.720p.HDTV.x264-AVS[rarbg]
[1] => 24.Legacy
[2] => 01
[3] => 08
[4] => 720p.HDTV.x264-AVS
[5] => rarbg
)
只需寫下來然后:)
^
(?P<title>.+?) # title
S(?P<season>\d+) # season
E(?P<episode>\d+)\. # episode
(?P<quality>[^-]+)- # quality
(?P<type>[^[]+) # type
\[
(?P<torrent>[^]]+) # rest
\]
$
如果零件是可選的,只需在其周圍添加一些( )
和一個?
在它后面,像這樣
// NAME SEASON EPISOE MEDIUM OPTIONS
$regex = '/(.+)\.S([0-9]+)E([0-9]+)\.(.+)(\[(.+)\])?/i';
但要注意更改$match
索引
Array
(
[0] => 24.Legacy.S01E08.720p.HDTV.x264-AVS[rarbg]
[1] => 24.Legacy
[2] => 01
[3] => 08
[4] => 720p.HDTV.x264-AVS
[5] => [rarbg]
[6] => rarbg
)
如果您不需要rarbg
值,則可以跳過內部()
// NAME SEASON EPISOE MEDIUM OPTIONS
$regex = '/(.+)\.S([0-9]+)E([0-9]+)\.(.+)(\[.+\])?/i';
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.