如何在Golang上的正则表达式中添加if条件,以便仅在Golang中存在组时匹配



我正在测试两个字符串,并希望根据条件应用一个通用正则表达式。如果一个组存在,则应用regex模式,否则应用其他模式,但在regex在线编辑器上,由于某种原因,似乎=()未被识别为添加if-else条件。

我有以下2个测试字符串:

/public/weltweit/nfsk/2022/05/18/668e9f57-30be-40b6-bc85-5bf66671e41d/668e9f57-30be-40b6-bc85-5bf66671e41d_AVC-270.mp4

使用^/(bpublicb[/])*(.+[a-z]{1,}.*[/|_]+)+.*?$的预期提取是

weltweit/nfsk/2022/05/18/668e9f57-30be-40b6-bc85-5bf66671e41d/668e9f57-30be-40b6-bc85-5bf66671e41d_

这是预期的,但对于另一个测试字符串:

具有相同Regex的/medp/ondemand/weltweit/fsk0/258/2580407/2580407_40256616.mp4我得到medp/ondemand/weltweit/fsk0/258/2580407/2580407_

我的预期提取是**medp/ondemand/weltweit/fsk0/258/2580407/**我想给组(bpublicb[/])添加一个if条件,以便在组存在的情况下选择下划线**_**;否则为斜线**/**

任何建议都将不胜感激。

谢谢!

您可以使用

^/(?:public/(.*_)|(.*/))

请参阅regex演示。结果在第1组或第2组中。

详细信息

  • ^-字符串的开头
  • /-斜线
  • (?:-非捕获组的启动:
    • public/-固定字符串
    • (.*_)-组1:除换行符字符之外的任何零个或多个字符,尽可能多,然后是一个_字符
    • |-或
    • (.*/)-第2组:除了换行符之外的任何零个或多个字符,尽可能多,然后是一个/字符
  • )——组末

最新更新