根据字符串模式的条件匹配将RegEx匹配到相同的Group(在Golang中)



我有两个测试字符串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
  • $字符串结束

查看正则表达式演示

最新更新