【发布时间】:2017-02-05 00:05:10
【问题描述】:
这可能是关于 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
提前致谢!
【问题讨论】:
-
如果这是整个字符串,你可以使用
^prefix(.*?)(?:\/(?:suffix)?)?$作为一般模式,不确定java中的具体实现(和正确的转义)。 -
是的,非常感谢!请把它作为答案
-
输入是否允许在匹配之前或之后包含字符,例如
...prefix/s/o/m/e/t/h/i/n/g/suffix...? -
@Thomas 不,字符串是严格前缀的。如果有的话,后缀也是严格的。刚刚发布了正确的模式。看看之前的评论
标签: java regex regex-greedy