golang regex获取包含搜索字符的字符串



我正在从字符串(链接)中提取一段字符串:

https://arteptweb-vh.akamaihd.net/i/am/ptweb/100000/100000/100095-000-A_0_VO-STE%5BANG%5D_AMM-PTWEB_XQ.1V7rLEYkPH.smil/master.m3u8 

期望输出应为1000000/1000000/100095-000- a_

我正在使用Golang风味的Regex^.*?(/[i,na,fm,d]([,/]?)(/am/ptweb/|.+=.+,))([^_]*).*?$,我只能获得具有以下输出的第4组1000000/1000000/100095-000- a

但是我想在a后面加上下划线

有点卡住了,任何帮助都很感激。

可以使用

(/(i|na|fm|d)(/am/ptweb/|.+=.+,))([^_]*_?)

参见regex演示。

细节:

  • (/(i|na|fm|d)(/am/ptweb/|.+=.+,))-第一组:
    • /- a/char
    • (i|na|fm|d)-组2:inafmd
    • (/am/ptweb/|.+=.+,)-组3:/amp/ptweb/或一个或多个字符尽可能多(换行字符除外),=,一个或多个字符尽可能多(换行字符除外)和,字符
  • ([^_]*_?)- Group 4:除_之外的零个或多个字符,然后是可选的_

您可以在A后面匹配下划线,如:

^.*?(/(?:[id]|na|fm)([,/]?)(/am/ptweb/|.+=.+,))([^_]*_).*$

查看regex演示

关于您尝试的模式的一些注意事项:

  • 这个符号是一个字符类[i,na,fm,d],它应该是一个分组(?:[id]|na|fm)
  • 在此组([,/]?)中,您可以选择捕获,/,因此理论上它可以匹配具有/i//am/ptweb/
  • 的字符串
  • 最后一部分.*?$不必是非贪婪的,因为它是模式的最后一部分
  • 这部分[^_]*也可以匹配空格和换行符

最新更新