这可能是关于SO的正则表达式可选后缀的100 + 1问题,但我没有找到任何,这可以帮助我:(
我需要从常见模式中提取字符串的一部分:
prefix/s/o/m/e/t/h/i/n/g/suffix
使用正则表达式。 前缀是常量,后缀可能根本不显示,因此prefix/(.+)/suffix
不符合我的要求。模式prefix/(.+)(?:/suffix)?
返回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
提前致谢!
答案 0 :(得分:6)
答案 1 :(得分:1)
如果在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
是否属于其中比赛或后缀中的拼写错误。)