1 回答

TA貢獻(xiàn)1797條經(jīng)驗(yàn) 獲得超6個(gè)贊
您可以使用交替來(lái)匹配 2 個(gè)捕獲組中的任一值,并使用點(diǎn)匹配換行符(?s)
然后,您可以使用組 1 作為鍵來(lái)組裝結(jié)果數(shù)組,并將組 2 的值添加到組 1 鍵。
(?s)\+\h+Track?type:\h+(audio|subtitles)\b.*?\+\h+Language:\h+([a-z]+)
例如
preg_match_all($re, $str, $matches, PREG_SET_ORDER, 0);
$result = [];
foreach ($matches as $match) {
? ? $result[$match[1]][] = $match[2];
}
print_r($result);
輸出
Array
(
? ? [audio] => Array
? ? ? ? (
? ? ? ? ? ? [0] => fre
? ? ? ? ? ? [1] => eng
? ? ? ? )
? ? [subtitles] => Array
? ? ? ? (
? ? ? ? ? ? [0] => fre
? ? ? ? ? ? [1] => fre
? ? ? ? )
)
不需要的更精確的模式可以(?s)匹配Track type:和匹配所有不以 A track 或 Language 開頭的行:
^\|\h+\+\h+Track type:\h+(audio|subtitles)(?:\R(?!\|\h+\+\h+(?:[A-Z] track$|Language:)).*)*\R\|\h+\+ Language:\h+([a-z]+)
- 1 回答
- 0 關(guān)注
- 98 瀏覽
添加回答
舉報(bào)