我正在测试两个字符串,并希望根据条件应用一个通用正则表达式。如果一个组存在,则应用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组:除了换行符之外的任何零个或多个字符,尽可能多,然后是一个/
字符
)
——组末