使用正则表达式匹配正斜杠或 # 之间的特定字符串

Matching a specific string between foward slash or # using regex

我正在尝试制作这个正则表达式:

([?=section\/en\/]*)([^\/#]*)

对于这些例子:

https://www.test.com/en/string-to-get#cid=4949
https://www.test.com/en/section/string-to-get/page&2#cid=4949
https://www.test.com/en/section/string-to-get#cid=4949

current regex

你需要使用

(?<=section\/)([^\/#]*)

或者,只是

section\/([^\/#]*)

并获取第 1 组值。

这里,

  • (?<=section\/) - 匹配紧跟在 section/ 子字符串
  • 之前的位置的正后视
  • ([^\/#]*) - 捕获第 1 组:除 /#.
  • 以外的零个或多个字符

参见regex demo #1 and regex demo #2

取决于是否需要正则表达式定界符,如果不需要 /s,您可以使用未转义的 /(?<=section/)([^/#]*)section/([^/#]*)