我有两个测试字符串mp4/dach/zdf/22/07/220724_traumorte_italiens_romantische_inseln_inf/1/220724_traumorte_italiens_romantische_inseln_inf_508k_p9v15.mp4
和
/mp4/none/zdf/21/11/211124_1925_sendung_ban/1/211124_1925_sendung_ban_a3a4_508k_p9v15.mp4
我想要一个RegEx来匹配第一个字符串以获得输出/dach/zdf/22/07/220724_traumorte_italiens_romantische_inseln_inf/1/220724_traumorte_italiens_romantische_inseln_inf
,我得到与RegEx^.*[mp][4](.+)(?:a[0-9]a[0-9])?(?:.+_.+_.+_|_.+_).*$
或^.*[mp][4](.+)(a[0-9]a[0-9]?(.+_.+_.+_)|(_.+_)).*$
但是它匹配第二个字符串/none/zdf/21/11/211124_1925_sendung_ban/1/211124_1925_sendung_ban_a3a4
,但我的期望是匹配3*_如果a3a4
存在;否则2*_它应该得到第二个字符串的匹配/none/zdf/21/11/211124_1925_sendung_ban/1/211124_1925_sendung_ban
。
但是,不知何故,这不是预期的分组(Group -1)。
任何关于这方面的提示都是非常感谢的。
谢谢!
您可以使用:
^S*?bmp4(/S*?)(?:_a[0-9]a[0-9])?(?:_[^s_]*){2}.mp4$
^
起始字符串S*?bmp4
尽可能匹配可选的非空白字符,并且它们匹配mp4
(
捕获组/S*?
匹配/
和可选的非空白字符,尽可能少
)
关闭组1(?:_a[0-9]a[0-9])?
可选地匹配非捕获组 中的模式(?:_[^s_]*){2}
重复2次_
和任何字符(_
和空白字符除外).mp4
匹配.mp4
$
字符串结束
查看正则表达式演示