带有前缀和可选后缀的正则表达式

Regex with prefix and optional suffix

这可能是关于 SO 上的正则表达式可选后缀的 100+1 个问题,但我没有找到任何可以帮助我的问题:(

我需要从通用模式中提取一部分字符串:

prefix/s/o/m/e/t/h/i/n/g/suffix

使用正则表达式。 前缀是常量,后缀可能根本不会出现,所以prefix/(.+)/suffix不符合我的要求。模式 prefix/(.+)(?:/suffix)? returns s/o/m/e/t/h/i/n/g/suffix(?:/suffix)? 部分一定比较贪心。

我想从这些输入字符串中得到 s/o/m/e/t/h/i/n/g

prefix/s/o/m/e/t/h/i/n/g/suffix
prefix/s/o/m/e/t/h/i/n/g/
prefix/s/o/m/e/t/h/i/n/g

提前致谢!

如果 prefix 之前或 suffix 之后的字符允许,请尝试 prefix(.*?)(?:/?(?:suffix|$))

这要求匹配尽可能短(不情愿的量词),并在 3 件事之一之前:输入结束前的单个斜杠,/suffix 或输入结束.这将匹配您提供的测试用例中的 /s/o/m/e/t/h/i/n/g 但会匹配更多输入,例如 prefix/s/o/m/e/t/h/i/n/g/suff (这在 IMO 中是可以的,因为您不知道 /suff 是否是匹配或后缀中的拼写错误)。

尝试

prefix\/(.+?)\/?(?:suffix|$)

正则表达式需要知道匹配何时完成,因此匹配 suffix 或行尾 ($),并进行捕获非贪心.

See it here at regex101.